Jump to content
php.lv forumi
  • 0

jQuery.html() metode..


darksign

Question

Problēmas apraksts:

izmantojot ajax dabūju no php skripta sev vajadzīgos datus, kas satur html.

 

Piemēram, no php faila, tika atgriezta šāda virkne:

<br /><xmp>Array 
( 
 [start_date] => 0000-00-00 00:00:00 
 [end_date] => 2011-01-14 12:00:00 
 [closed_date] => 0000-00-00 
 [published] => 1 
 [close_offer] => 0 
) 
</xmp>800020.00

 

Ja šos datus ievietoju HTML elementā ar jQuery(..selektors..).html(dati), un pēc tam pie tā vēršos ar jQuery(..selektors..).html() (analogs parastam innerHTML) tad iegūstu šādu rezultātu:

<br><xmp>Array 
( 
 [start_date] => 0000-00-00 00:00:00 
 [end_date] => 2011-01-14 12:00:00 
 [closed_date] => 0000-00-00 
 [published] => 1 
 [close_offer] => 0 
) 
</xmp>800020.00

 

Bet ja vēršos ar jQuery(..selektors..).text(dati) jeb innerText, tad rezultātā iegūstu šādu virkni:

Array 
(
 [start_date] => 0000-00-00 00:00:00
 [end_date] => 2011-01-14 12:00:00
 [closed_date] => 0000-00-00
 [published] => 1
 [close_offer] => 0 
) 
800020.00

 

Problēma sekojoša, gribu updeitot datus tikai tad, ja tie mainās.

Bet šajā gadījumā, sanāk, ka viņi ir visu laiku savādāki, jo pielietojot šādu salīdzināšanu, vienmēr dati būs atšķirīgi:

 

          if(elementsArr[fid].html() != data)
          {
             elementsArr[fid].html(data);
             jQuery(field).effect("highlight", 500);
          }

 

p.s. debugoju izmantojot firebug konsoles iespējas.. līdz ar to ieraudzīju, ka problēma ir ar ">" simboliem:

//Tikai debugoshanai ieksh FireFox + FireBug

console.log("Elementa saturs: " + elementsArr[fid].html());

console.log("Elementa saturs txt: " + elementsArr[fid].text());

console.log("Datu saturs: " + data);

 

 

Kādam ir bijusi vajadzība šādi salīdzināt? Kādā veidā ir iespējams ar JS dabūt arā raw html no elementa, arī lai subelementus rāda ar normāliem html nevis parsētiem tagiem?

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

nop, es jau tieši šo situāciju aprakstīju, ka neder nedz .html() nedz .text() .. vismaz tīrā veidā nē!

 

jo mainīgais data vienmēr būs smuks html, bet .text() būs tikai teksts, bez jebkādiem html tagiem, bet .html() rādīs tikai pirmā līmeņa tagus ("<xmp>" gadījumā!!!) un visu kas zem viņa, tas būs izfiltrēts un aizvietots ar speciāliem simboliem.

 

lai gan, iespējams problēma ir tā, ka tieši <xmp> tags ir tas īpašais, jo pārlūks visu saturu iekš viņa nevis atstā neaiztiktu, bet pārvērš tā, lai pats nesaprastu! hmm.. kaut gan drīzāk vajadzētu vienkārši ignorēt un neparsēt!

 

konkrētajā gadījumā, man vajadzīgo problēmu esmu atrisinājis pavisam savādākā veidā.. bet šis jautājums joprojām paliek interesants, kā būt, vai kā nebūt.. vai vispār kaut ko tādu drīkst uzdrīkstēties gaidīt no html + javascript arī ar <xmp> tagiem :)

Link to comment
Share on other sites

  • 0

imo, browseris vnk izravē nesaprotamu tagu, tāpat kā normalizē <br /> uz <br> (jo normāli gandrīz visas XHTML lapas tiek renderētas kā html transitional, bet tas ir atsevišķš temats, kāpēc). tobish, jquery vēršas pie DOMa, kurā laikam nav tas xmp.

 

p.s. es tikai skaļi domāju.

 

p.p.s. wtf is xmp? Atradu, ka tas ir kaut kāds adobes tags

Edited by Mr.Key
Link to comment
Share on other sites

  • 0

Pirmkārt, paldies, ka cenšaties palīdzēt, bet atbildes man liek smaidīt, un šķiet, ka nu reiz jums pienācis atkārtot html pamatus .. tai skaitā specializētos tagus ;)

 

imo, browseris vnk izravē nesaprotamu tagu, tāpat kā normalizē <br /> uz <br> (jo normāli gandrīz visas XHTML lapas tiek renderētas kā html transitional, bet tas ir atsevišķš temats, kāpēc). tobish, jquery vēršas pie DOMa, kurā laikam nav tas xmp.

 

p.s. es tikai skaļi domāju.

 

p.p.s. wtf is xmp? Atradu, ka tas ir kaut kāds adobes tags

 

jap, pārlūkprogramma izravē gan, bet ne jau tagus! p.s. <xmp> nav nesaprotams tags, bet viens no pamattagiem. Un tas nav nekādā saistībā ar adobe!

 

<xmp> ir PHP htmlspecialchars() alternatīva HTML pusē :)

 

bravo.. :)

 

elementsArr[fid] tev neatgriež jQuery referenci, bet DOM nodi, attiecīgi tai nav metožu .html() un .text(). Lieto elementsArr.eq(fid).text()

 

nop! viņš atgriež visu to ko man vajag, un viņam ir gan .html() gan .text() metodes. p.s. arī DOM elementiem, jQuery atļauj izsaukt šīs metodes.

 

Tas ir tags , kurš tika uzskatīts par novecojušu, skākot ar HTML3.2 versiju (1997. gads).

Tā vietā tika ieteikts izmantot <pre>.

 

Nezinu, kas un kāpēc viņu uzskata par novecojušu, bet viņš ir ļoti noderīgs, izmantoju gandrīz katru dienu, kad vajag debugot svešu kodu, bez jebkādām iespējām lietot xDebugerus utt..

 

<pre> - tags nespēj aizvietot <xmp> funkcionalitāti!

 

 

Lai būtu skaidrs, tad te piemērs, kas demonstrē atšķirības starp <xmp> un <pre> tagiem.

 

Piemēram, man no datubāzes tiek dabūti kaut kādi dati, un es nezinu vai konkrētie dati satur html, vai nē, bet gribu redzēt, kas tad īsti tur ir tiešā veidā, netērējot laiku uz view-source utt.

 

Līdz ar to.

Ja man ir šāds masīvs:

$arr = array();
$arr['a'] = "pirmais elements";
$arr['b'] = "<b>otrais</b> elements";
$arr['c'] = "<hr>treshais<div style='display:none'> elements</div>";

 

 

Izprintējot ārā

 

echo "<pre>";
print_r($arr);
echo "</pre>";

 

un izvadot starp <pre> tagiem, es iegūšu šādu redzamu rezultātu:

 

Array

(

[a] => pirmais elements

=> otrais elements

[c] =>

__________________________________________

treshais

)

 

Bet tai pat laikā ja izvadīšu

echo "<xmp>";
print_r($arr);
echo "</xmp>";

ārā starp <xmp> tagiem, tad redzamais rezultāts būs šāds:

 

Array

(

[a] => pirmais elements

=> <b>otrais</b> elements

[c] => <hr>treshais<div style='display:none'> elements</div>

)

 

Ja tiek izvadīts ar <pre> tagiem, tad teksts tiek noformēts un html izpildās, bet ja <xmp> tad html kods starp šiem tagiem neizpildās (DOM to saturu uztur parasti ar speciāliem simboliem, un to neparsē).

 

Līdz ar to, tad kad kādā lielā sistēmā nezinot, vai mainīgais satur, vai nesatur html tagus, ir ļoti ērti izvadīt izmantojot tieši xmp tagus, un pat ja tā vietā izmantotu htmlspecialchars(), tad būtu jādomā kas tad īsti ir tajā mainīgajā.. pirms parsēšanas utt.. bet ar xmp.. viss vienkāršais ir ģeniāls :))

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...