3
我試圖在IE8中創建一個AJAX請求。IE8的AJAX獲取setRequestHeaders不工作,除非在URL中提供的參數
var xhr = new ActiveXObject('Msxml2.XMLHTTP');
xhr.open('GET', '/ajax/');
// Required header for Django to detect AJAX request
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.onreadystatechange = function() {
if (this.readyState == 4) console.log(this.responseText);
}
xhr.send(null);
這在Firefox,Chrome,Safari中運行得非常好。然而,在IE8中,我的所有AJAX測試請求都工作,除了我正在執行GET而沒有任何查詢字符串參數(如上面的那個)之外。的POST工作,毫無疑問,GET請求只每當我在URL中包含查詢字符串,像這樣的工作:
xhr.open('GET', '/ajax/?foo=bar')
我也110%肯定,我的服務器代碼進行適當處理這些請求,因此,這個樹樁我完全。
有沒有人有任何線索可能會導致此?
我知道它可能不是你要找的答案,你爲什麼不使用jQuery?它承擔了您所有瀏覽器兼容性的責任。所以,請試試看。它也不會改變你的代碼。 :) – Bipul 2010-04-17 06:33:34
你有沒有嘗試過使用類似wireshark的東西來確定IE是否發出HTTP請求呢?也就是說,你確定瀏覽器沒有確定「嘿,我甚至不需要運行HTTP請求,因爲我已經在緩存中找到了這個URL!」 – Pointy 2010-04-17 10:15:52
@Pointy - 確保清除緩存並在任何更改後重新啓動服務器。 @Bipul - 我在寫我自己的框架,但我喜歡jQuery =) – ground5hark 2010-04-17 15:21:03