2013-08-06 97 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()"不;