2012-09-18 117 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如果你正在得到一个你没有要求的刷新!

相关问题