Web development

XML header and childNodes


25th of July 2007

I discovered something really odd today that maybe a seasoned AJAX guru already knew as a legendary bug which might even have a name. I was developing a little AJAX method on the server side that returned this:

 <?xml version="1.0"?>
 <sections>
   <section>
     <number>001</number>
     <title>PLug 1</title>
   </section>
   <section>
     <number>003</number>
     <title>PLug 3 xyz</title>
   </section>
 </sections>

 Note: The Content-Type used was "text/xml"

I used jQuery to kick off the AJAX call and then I loop over the document element returned with childNodes almost like this:

 children = data.childNodes[0].childNodes;
 for (var i=0, len=children.length; i<len; i++)
   // bla bla

It was working fine in Firefox and of course not in IE 6.0.

Long story short, the solution was to not attach the first line: <?xml version="1.0"?> because with that line, in IE the object data.childNodes[0].childNodes did not contain any further nodes to loop over. Why??? No idea. So now my server side sends this instead:

 <sections>
   <section>
     <number>001</number>
     <title>PLug 1</title>
   </section>
   <section>
     <number>003</number>
     <title>PLug 3 xyz</title>
   </section>
 </sections>

To make it work now I just removed that first line. I haven't had to worry about unicode problems yet but I would use this first line to describe the unicode encoding if non-ASCII. Now I can't, which makes me a bit worried that I might run into encoding problems one day.



Comment

 

Commenting is currently disabled in Mobile version