4

我正在使用 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" );
 }          
});

请帮我解决这个问题。

4

2 回答 2

17

解决方法很简单:不要async: false$.ajax.

它在较新的版本中已弃用,您不需要它。使用它总是一个坏主意。执行您需要对成功回调的结果执行的操作(就像您的console.log)。

文档(1.8):

请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。从 jQuery 1.8 开始,不推荐在 jqXHR ($.Deferred) 中使用 async: false ;您必须使用完成/成功/错误回调。

于 2012-09-18T07:37:39.270 回答
0

我已经在几个地方看到了这个线程,所以会更新一个答案:我尝试将异步调整为 true,使用许多不同的帖子和其他属性,但它是表单提交的默认操作导致页面刷新:

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

e.preventDefault() 阻止了正常的提交行为,即重新加载页面。该行为会生成 xml 重定向错误,因为默认表单提交使用该功能。

如果您获得不需要的刷新,请尝试添加 preventDefault!

于 2015-12-18T19:07:14.587 回答