我正在使用javascript(客户端)发送XMLHttpRequest,试图从具有XML内容的php页面(服务器端)获取responseXML.当html页面和php页面处于同一级别(均在本地主机中)时,我没有任何麻烦.当它们不是时,问题就开始了-responseXML总是为null.
奇怪的是,我使用不同的浏览器(chrome,firefox,opera)获得此结果,但IE8却给了我正确的responseText(不是responseXML),但仅在我“允许阻止内容”之后.
另一件事.我正在使用phonegap将这个html页面(请求页面)转换为Android应用程序(这是我的主要目标),而当我在平板电脑上测试该应用程序时,我得到了相同的结果(空响应).这是客户端代码:
<html>
<head>
<title> T_d test </title>
<script language="javascript">
var infoPage="http://172.25.10.215/list2.php";
// 172.25.10.215 the IP address of the server
function test()
{
var xht = new XMLHttpRequest();
xht.open("GET",infoPage,true);
xht.send();
xht.onreadystatechange=function() {
if (xht.readyState==4) {
alert(""+xht.responseXML);
document.getElementById("id1").innerHTML="The result is : "+xht.responseText;
}
}
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
btn
<input name="btn" type="button" id="btn" onClick="test();" value="Submit" />
</form>
<label id="id1"></label>
</body>
</html>
这是服务器页面代码:
<?php
header('Content-Type: text/xml');
?>
<root>
<file>
<filename>Test.txt</filename>
<fileCreatingDate>15-7-2013</fileCreatingDate>
<fileModifyDate>20-7-2013</fileModifyDate>
<filesize>10002345</filesize>
<filetype> Text</filetype>
</file>
<file>
<filename>Test2.txt</filename>
<fileCreatingDate>19-7-2013</fileCreatingDate>
<fileModifyDate>20-8-2013</fileModifyDate>
<filesize>3002345</filesize>
<filetype> Text</filetype>
</file>
</root>
这是我使用IE8获得的响应文本:
The result is : Test.txt 15-7-2013 20-7-2013 10002345 Text Test2.txt 19-7-2013 20-8-2013 3002345 Text
能否请你帮忙??
谢谢
解决方法:
除了JavaScript源自的服务器,您无法向其他服务器发出AJAX请求.这是由于浏览器的same origin policy(出于安全原因而存在).
您可能可以使用解决方法,如以下问题所述:Making an AJAX request to another server