[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

XmlHttpRequest In Javascript - not finding nodeValue's ???

Posted on 2005-05-12
2
Medium Priority
?
726 Views
Last Modified: 2008-01-09
I am playing around with XmlHttpRequest to add some nifty functionality to a CMS. My problem is that, using DOM, I CAN access the object.nodeName, but not the object.nodeValue. My first assumption was that my XML was not correctly formed, however I have checked a million times and it's fine. Here is what I'm working with:

                var req;
      
            function loadXMLDoc(url) {
                  // branch for native XMLHttpRequest object
                  if (window.XMLHttpRequest) {
                        req = new XMLHttpRequest();
                        req.onreadystatechange = processReqChange;
                        req.open("GET", url, true);
                        req.send(null);
                        // branch for IE/Windows ActiveX version
                  } else if (window.ActiveXObject) {
                        req = new ActiveXObject("Microsoft.XMLHTTP");
                        if (req) {
                              req.onreadystatechange = processReqChange;
                              req.open("GET", url, true);
                              req.send();
                        }
                  }
                  else {
                        // do nothing
                  }
            }

               function processReqChange() {
                  // only if req shows "loaded"
                  if (req.readyState == 4) {
                        // only if "OK"
                        if (req.status == 200) {
                              clearFileList();
                              buildFileList();
                        } else {
                              alert("There was a problem retrieving the XML data:\n" + req.statusText);
                        }
                  }
            }

                // empty Topics select list content
            function clearFileList() {
                  document.getElementById('fileList').innerHTML = '';
            }

               function appendToList(divi, value, content) {
                  var opt;
                  opt = divi;
                  opt.innerHTML = (opt.innerHTML + content);
            }
            
            function buildFileList() {
                   var listdiv = document.getElementById("fileList");
                   var items = req.responseXML.getElementsByTagName("file");
                   // loop through <file> elements, and add each nested
                   // <title> element to List
                   for (var i = 0; i < items.length; i++) {
                                 // Finds TITLE element and outputs the value.
                         appendToList(listdiv, i, ('<li class="attFile" id="att'+ i +'"><a href="#">' + items[i].firstChild.nodeValue + '</a></li>'));
                   }
                    
            }



My XML file outputs this:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<kcatt>
      <response>1</response>
      <err></err>
                        
      <filelist>

            <file>
                  <title>Happy Lappy</title>
                  <path>050513-095240|||mums_new_lappy.jpg</path>

                  <type>image</type>
                  <description>Mums' great new laptop.</description>
            </file>

            <file>
                  <title>image</title>
                  <path>050427-031554|||1seriesjune200301.jpg</path>

                  <type>image</type>
                  <description>is this an image! i think it is!</description>
            </file>

      </filelist>

</kcatt>



I've tried using getElementsByTagName() to find the "title" element, all sorts of crazy hair-brained stuff, but it just keeps outputing "undefined".

Any ideas? Can you see any errors in my code? Your help is most appreciated!
0
Comment
Question by:ucantblamem
2 Comments
 
LVL 3

Accepted Solution

by:
haobaba1 earned 2000 total points
ID: 13996335
items[i].firstChild.nodeValue

is the <file><title> element. The Text within that is within a Text Node. I believe you may need to use items[i].firstChild.firstChild.nodeValue.

I got this example: x[i].childNodes[j].firstChild.nodeValue, from quirksmode.


http://www.quirksmode.org/dom/importxml.html

0
 

Author Comment

by:ucantblamem
ID: 14001014
WOW, that worked???

It's funny, cause that just doesn't seem logical, but it works??? Thanks heaps, you've saved me alot of headache!
0

Featured Post

Upgrade your Question Security!

Add Premium security features to your question to ensure its privacy or anonymity. Learn more about your ability to control Question Security today.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In my daily work (mainly using ASP.net), I need to write a lot of JavaScript code. One of the most repetitive tasks I do are the jQuery Ajax calls. You know: (CODE) I don't know if for you it's the same, but for me is soooo tedious to write the …
This article discusses how to create an extensible mechanism for linked drop downs.
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…
Suggested Courses

834 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question