我正在使用HTML5,jQuery 1.6.1,jQuery Mobile 1.0.1。
我使用下面的代码来发出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" );
}
});
请帮我解决这个问题。
答案 0 :(得分:17)
解决方案很简单:请勿在{{1}}中使用async: false
。
它在较新版本中已弃用,您不需要它。使用它总是一个坏主意。使用成功回调的结果执行您需要做的事情(就像您的$.ajax
)。
来自the documentation(1.8):
请注意,同步请求可能会暂时锁定浏览器, 在请求处于活动状态时禁用任何操作。从jQuery 1.8开始, 不推荐使用async:false和jqXHR($ .Deferred);您 必须使用完整/成功/错误回调。
答案 1 :(得分:0)
我已经在几个地方看过这个帖子,所以会更新这个答案: 我尝试使用许多不同的帖子和其他属性将异步调整为true,但这是导致页面刷新的表单提交的默认操作:
submitSuggestion: function (e) {
e.preventDefault();
submitComment(viewModel);
},
});
e.preventDefault()阻止了正常的提交行为,即重新加载页面。该行为会生成xml重定向错误,因为默认表单提交使用了该函数。
如果你没有得到你没有要求的刷新,请尝试添加preventDefault!