2013-08-06 59 views
2

我使用JavaScript(客户端)试图从具有XML内容(服务器端)PHP页面得到的responseXML发送的XMLHttpRequest我不能。当html页面和php页面处于同一级别时(本地主机),我没有任何问题。当问题不存在时,问题就会开始 - responseXML始终为空。responseXML的使用AJAX(XMLHttpRequest的)

奇怪的是,我得到这个结果使用不同的浏览器(铬,火狐,歌剧)除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响应文本:

结果是:Test.txt的15-7-2013 20-7-2013 10002345 Text Test2.txt 19-7-2013 20-8-2013 3002345 Text

Could y你请帮忙? 感谢

+0

都是在同一台服务器上的文件? –

+0

您可能还需要检查'xht.status'是'200' – Ian

回答

3

你不能让一个Ajax请求比你的JavaScript源自服务器之外的服务器。这是因为安全原因存在的浏览器'same origin policy

您可以使用一种变通方法,在这个问题描述:Making an AJAX request to another server

+0

如果是这样的话,那么为什么IE8是给我的反应如何?是否因为我选择允许阻止的内容,这可能是上述政策的一部分?如果这是真的,为什么其他浏览器不给我这个选项? –

0

你的XML是无效的。您作为XML文档的第一行缺少这行:

<?xml version="1.0" ?> 
0

CORS可能是这里的问题。验证尝试在谷歌浏览器中启用“--disable-web-security”启用。这将禁用网络安全并启用CORS。不用说,在正常上网冲浪时不要使用这种模式。

PS: 你将需要关闭所有Chrome窗口/选项卡,并推出了一个新的禁用为它工作的安全性。

0

加入到这一...

你开放应该是

xht.open("GET","infopage.extension",true); 

你的按钮onclick事件应onClick="test()"不;