2012-09-18 62 views
2

我使用的是HTML5,jQuery 1.6.1,jQuery Mobile 1.0.1。withCredentials屬性在Firefox中不受支持

我正在使用下面的代碼來發出Ajax請求。它在Chrome中工作正常,但在Firefox 14.0.1中測試時出現以下錯誤。

窗口上下文中的同步模式不再支持使用XMLHttpRequest的withCredentials屬性。

代碼:

$.ajax({ 
    type: "GET", 
    dataType: "json",   
    async: false, 
    beforeSend: function (xhr){   
     xhr.setRequestHeader('Authorization', make_base_auth(UserId, Password)); 
    }, 
    xhrFields: { 
     withCredentials: true 
    }, 
    success:function(data){     
    console.log("Success");   
}, 
error:function(xhr,err){ 
    console.log("Failed"); 
}   
}); 

請幫我出這一點。

回答

16

解決方法很簡單:不要在$.ajax中使用async: false

它在新版本中不推薦使用,您不需要它。使用它總是一個糟糕的主意。執行你需要做的與成功回調的結果(就像你的console.log)。

the documentation從(1.8):

注意,同步請求可能會暫時鎖定瀏覽器, 禁用任何操作而請求是活動的。從jQuery 1.8, 開始,不贊成使用帶有jqXHR($ .Deferred)的async:false;您的 必須使用完整/成功/錯誤回調。

+0

我希望我可以upvote這個答案額外50倍。非常感謝你 - 你剛剛結束了兩個小時的錯誤修復會議。 –

+0

6小時給我! –

+0

@tinytiger很高興聽到:) –

0

我看到這個線程伊娜夫婦的地方,這樣會更新一個答案之一: 我試圖調整異步爲true,使用許多不同的職位和其他屬性,但它是形式的默認操作提交導致頁面刷新:

    submitSuggestion: function (e) { 
         e.preventDefault(); 
         submitComment(viewModel); 
        }, 
       }); 

e.preventDefault()阻止正常提交行爲,即重新加載頁面。該行爲會產生xml重定向錯誤,因爲缺省表單提交使用了該函數。

嘗試添加preventDefault如果你正在得到一個你沒有要求的刷新!

相關問題