我有一個網站(在IE8和IE7即使正常工作),我做一個Ajax調用是這樣的:爲什麼這個jQuery的Ajax調用失敗,只有在IE9
// perform an ajax request to generate a new subscriber account
jQuery.ajax({
type: 'POST',
url: '/index.php?option=com_content&view=article&id=45&tmpl=component',
data: postVars,
success: handleResponse,
error: function(jqXHR, textStatus, errorThrown) {
alert ('response: ' + jqXHR.responseText);
alert ('code: ' + jqXHR.getResponseHeader('X-Subscriber-Status'));
}
});
被請求的頁面不辦除了返回一個數字狀態碼之外,其他任何瀏覽器都可以正常工作,除了IE9以外。該腳本與其請求的頁面位於同一個域中,因此跨域腳本不應存在任何問題。
我終於找到發生了什麼,但我不知道如何解決它。事實證明,Ajax請求成功完成,沒有問題。我通過使用Fiddler來查看網絡流量來驗證這一點。服務器使用HTTP狀態代碼200響應請求,並且主體不包含任何東西,但只包含單個數字的響應代碼。在這一點上,jQuery執行錯誤處理程序,而不是預期的成功處理程序(在IE9中)。爲什麼要這樣做,我該如何防止它?這隻發生在IE9中。即使IE8和IE7工作正常,完全相同的代碼!正如你所看到的,我終於採取了檢測IE9並使用XmlHttpRequest對象來做到這一點(順便說一句,它工作得很好)。
這看起來像一個jQuery的bug,但我在我的搜索中找不到任何提及。我真的是唯一一個經歷過這種奇怪行爲的人嗎?
您有運行的IE9不同的功能邏輯。doIe9Request()看起來像什麼?那是錯誤的。 –
是的,Ajax請求不會失敗。它不會在IE9中執行。 – Tomm
在解決問題後添加了單獨的邏輯。我修改了原文,以反映我在IE9中失敗的代碼,但沒有其他瀏覽器。 – rushinge