阅读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>
答案 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处理器在<?
和?>
标记上绊倒的可能性