Ajax XML响应为NULL

时间:2012-05-19 14:10:23

标签: javascript xml ajax null xmlhttprequest

我想要做的是从ajax请求中获取XML以便从中提取数据(使用DOM,而不是重要)。不,我确实知道ajax工作正常,因为如果我尝试获取AjaxRequest.responseText,它可以正常工作。我得到的错误信息是:

'null'不是对象(评估'resturantsCategoriesAjaxXML.getElementsByTagName')

当我尝试将responseXML写入日志时,我得到的只是null,就像它尚未定义一样。我已经包含了处理AJAX的完整JS(对于奇怪的变量名称,我只是不想在问题是拼写错误的情况下更改它们)以及它正在获取的XML(简单XML)。 非常感谢您的帮助:D

Java脚本:

resturantsCategoriesAjaxRequestAdress = "testFiles/categoriesAjax.xml";
resturantsCategoriesAjaxRequest = new XMLHttpRequest();
resturantsCategoriesAjaxRequest.onreadystatechange = function(){
if(resturantsCategoriesAjaxRequest.readyState == 4){
    resturantsCategoriesAjaxXML = resturantsCategoriesAjaxRequest.responseXML;
    console.log(resturantsCategoriesAjaxRequest.responseXML);
    categoriesArray = resturantsCategoriesAjaxXML.getElementsByTagName("category");
    categoriesArraylenght = categoriesArray.length;
    alert(categoriesArraylenght);
    categoriesArrayIritationControl = 0;
    while (categoriesArraylenght >= categoriesArrayIritationControl) {
        categoryName = categoriesArray[categoriesArrayIritationControl].getAttribut("name");
        //create new <li> object
        //add to ctegories menu on restrants page
        alert(categoryName);
    }
}
}
resturantsCategoriesAjaxRequest.open("GET", resturantsCategoriesAjaxRequestAdress, true);
resturantsCategoriesAjaxRequest.overrideMimeType("text/xml");
resturantsCategoriesAjaxRequest.send();
console.log(resturantsCategoriesAjaxRequest.readyState);

XML:

<?xml version='1.0'?>
<category name="Fast_Food" id="1120"></category>
<category name="Chinese" id="1108"></category>
<category name="Italian" id="1230"></category>

2 个答案:

答案 0 :(得分:1)

我认为您的文档不是正确的xml文档,您需要"<category>"上方的父标记

答案 1 :(得分:1)

您需要一个封装其他节点的根元素。

可能<categories></categories>结束,其中包含您的所有<category>个节点。