Ajax:responseXML返回null

时间:2013-06-15 20:02:19

标签: xml ajax

阅读Ajax的初学者书,第二个例子是从php文件中获取XMl数据。我已经被困了大约2个小时,现在谷歌搜索和阅读该网站的答案,其他人的类似问题,我无法弄明白

我的功能

var options;

function getOptions1(){
    var XMLHttpRequestObject = new XMLHttpRequest();
    XMLHttpRequestObject.open("GET", "http://localhost/AV/data.php", false); // this was "true" somewhere i read to set it to "false"
    XMLHttpRequestObject.onreadystatechange = function(){
        if (this.readyState != 4) return;
        if (this.status == 200){ 
            alert ("hi");
            var xmlDocument = this.responseXML;
            options = xmlDocument.getElementsByTagName("option"); // firefox tels me here "TypeError xmlDocument is null"
            listOptions();
        }
    }
    XMLHttpRequestObject.send(null);
}

这是data.php文件

 <?xml version="1.0" encoding="UTF-8" ?> //i read to add that encoding in there - no help
    <options>
        <option>red</option>
        <option>green</option>
        <option>blue</option>
    </options>

2 个答案:

答案 0 :(得分:0)

尝试将其添加到PHP文件的顶部(在php标记中):

header('Content-Type: text/xml');

如果您没有告诉PHP以text/xml的形式发送响应,则可能会将响应发送为text/html,这意味着responseXML属性将为空。

另外,请确保您没有违反相同的原始政策。您需要来自同一域和同一端口的请求。

尝试更改

 XMLHttpRequestObject.open("GET", "http://localhost/AV/data.php", false); // this was "true" somewhere i read to set it to "false"

要:

 XMLHttpRequestObject.open("GET", "/AV/data.php", false); 

答案 1 :(得分:0)

data.php文件重命名为data.xml,以避免PHP处理器在<??>标记上绊倒的可能性