[JS DOM] nodeValue i CDATA - jak odczytać?

0

Problem niby prosty, ale już godzinę siedzę, próbuję i nic :/. Mam sobie zapytanie AJAX, więc pomyślałem sobie, że fajnie, jakby to rzeczywiście był XML, a nie "na chama" odczytanie tekstu z otrzymanej odpowiedzi. Stworzyłem taki oto plik-template odpowiedzi:

<?xml version="1.0" encoding="UTF-8"?>
<ajaxAnswer>{$odpowiedz|escape:'html'}</ajaxAnswer>

i odczytuje go tak:

var xmlobject = (new DOMParser()).parseFromString(req.responseText, "text/xml");
var ajaxanswer = xmlobject.getElementsByTagName('ajaxAnswer')[0].firstChild.nodeValue;

wszystko śmiga jak trzeba. Gdy jednak dodam sobie CDATA do templatki:

<?xml version="1.0" encoding="UTF-8"?>
<ajaxAnswer><![CDATA[{$odpowiedz|escape:'html'}]]></ajaxAnswer>

skrypt zachowuje się, jakby w tym answerze nic nie było :/. Szukałem po googlu metod i metodek DOMParsera, ale nic mi nie pomaga... Ktoś może wie, jak to ugryźć?

0

może to dziwne, ale u mnie działa jak powinno ( windowsXp, firefox 2.0.0.4 ):

<script type="text/javascript">

window.onload=function(){

var tpl = new Array();
tpl[1] = '<\?xml version="1.0" encoding="UTF-8"?><ajaxAnswer>{$odpowiedz|escape:\'html\'}></ajaxAnswer>';
tpl[2] = '<\?xml version="1.0" encoding="UTF-8"?><ajaxAnswer><![CDATA[{$odpowiedz|escape:\'html\'}]]></ajaxAnswer>';

var i=0;
for (i=1; i<3; i++){
	var xmlobject = (new DOMParser()).parseFromString(tpl[i], "text/xml");
	var ajaxanswer = xmlobject.getElementsByTagName('ajaxAnswer')[0].firstChild.nodeValue;

	alert(ajaxanswer);
}

}

</script>

za każdym razem dobrze pokazuje zawartość tagu ajaxAnswer

0

ręce opadają... działa :/

chodziło chyba o tab przez <![CDATA...

0

bez sensu tworzyć odpowiedź na xml tylko chyba po to żeby zajmowała parę bajtów więcej a wszystkie dane i tak wpieprzyć do jednego tagu
poza tym i tak to przeszło jako tekst, tylko na końcu "na chama" parsujesz responseText
to jak pakowanie czegoś tylko po to żeby za sekundę można było sobie to rozpakować - ile całkowicie zbędnej pracy musi wykonać komputer w myśl dziwnej ideologii
no ale aby nie podważać ślicznej nazwy ...

no a bardziej w topic odpowiedź: używaj Firebuga, zobaczyłbyś w nim idealny rozkład drzewka odpowiedzi i zobaczyłbyś że zapewne odpowiedź była tylko nie tam gdzie jej szukałeś tylko zaraz obok

BTW też tworzę odpowiedzi na xml ale tylko jeśli odpowiedź zawiera co najmniej dwa elementy, z założenia ma być je łatwiej wtedy rozróżnić choć nie zawsze tak jest

0

bez sensu jest mowic bez sensu ;)

Głównie chodzi mi o to, żeby się czegoś nauczyć. Poza tym jeżeli będę przekazywać jeden parametr w xml, to chwilę mi zajmie zmiana kodu, aby przekazywał dwa, trzy, czy dowolną ilość...

a firebug to chyba właśnie to, czego mi brakowało :) thx

1 użytkowników online, w tym zalogowanych: 0, gości: 1