2012-12-26 46 views
0

我已經使用一個簡單的腳本從PHP頁面獲取響應,但響應標頭在firefox和chrome中爲空,但在IE中爲空。我的劇本的片段是:HTML響應標頭在firefox/chrome中爲null,但在IE中工作

var request = makeHttpObject(); 
request.open("GET", url, true); 
request.withCredentials = "true"; 
request.send(); 
if (request.status == 200 && request.readyState == 4) 
    { 
    alert(request.getAllResponseHeader()); 
    } 

當我檢查的HTTP對象的響應頭調試「網」選項卡下,我所看到的一切。

任何人都可以告訴我的腳本中缺少什麼?

+2

'makeHttpObject()'看起來像什麼?爲什麼「真」是一個字符串?我不認爲存在「getAllResponseHeader」。 – Ryan

+0

它是[getAllResponseHeaders()](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#getAllResponseHeaders())。 –

+0

@minitech:我嘗試了所有,但沒有結果... request.readyState爲4,但在調試器中狀態爲0。 makeHttpObject看起來是這樣的: - 功能makeHttpObject(){ 嘗試 {返回新的XMLHttpRequest();} 趕上(錯誤){} 嘗試{返回新的ActiveXObject( 「MSXML2.XMLHTTP」);} 趕上(錯誤){ } try {return new ActiveXObject(「Microsoft.XMLHTTP」);} catch(error){} throw new Error(「Could not create HTTP request object。」); } – user1930463

回答

1

getAllResponseHeaders特定於IE。要獲得特定的響應標題,請改爲使用getResponseHeader

+0

呵呵,它沒有提及MDN:https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#getAllResponseHeaders%28% 29我只是在Firefox中試過它,它存在。 – Ryan

+0

所以......你對我的問題有什麼建議?我從本地文件訪問其他域的PHP文件..我需要一些處理這個在其他域的PHP文件? – user1930463

+0

@minitech這很奇怪,這是我聲稱它是IE特定的理由。猜猜我會挖掘規範,看看我能否找到它。另一方面'getResponseHeader'是標準的。 –

-2

對於普通的HTTP請求,您必須爲每個瀏覽器創建一個,我記得。您僅使用1種方式,因此不適用於所有瀏覽器,因爲並非所有瀏覽器都能理解這一點。也許你可以看看JQuery。它非常簡單,快速,適用於所有市長瀏覽器。

+0

好吧......這是完全錯誤的。 – Ryan

+0

@minitech:所以請告訴我該怎麼辦?我正在嘗試從我的本地主機服務器調用託管頁面... – user1930463

+0

@ user1930463:如果它是跨域的,那麼...您的問題已存在。到託管頁面或瀏覽器? – Ryan

0

您使用的過程特定於Internet Explorer。嘗試使用相同的jQuery其他一些Ajax庫,它將適用於大多數瀏覽器。

示例代碼:

$.ajax({ 
     url: 'ajax/test.php?id=sampleId', 
     success: function(data) { 
     $('.result').html(data); 
     alert('Load was performed.'); 
     alert(data); 
     } 
    }); 

現在test.php的頁面上,你可以寫你的服務器腳本。這將在大多數瀏覽器上運行javascript eanbled。

+0

我試過這也...沒有任何工作... http://kanti.zxq.net/dinehot/p.php..this是我試圖得到迴應的網頁.. 。請檢查你是否有任何問題。 – user1930463

相關問題