Firefox不支持withCredentials属性

Sri*_*uri 4 firefox jquery html5

我正在使用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" );
 }          
});
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.

Den*_*ret 17

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

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

文档(1.8):

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

  • 我不同意你永远不应该使用同步模式.我们有一个企业站点,当用户关闭页面时,必须进行一些服务器端处理.可靠地执行此操作的唯一方法是使用卸载功能并生成同步的ajax请求.如果浏览器关闭太快但仅在某些浏览器中关闭,这些似乎会失败.除非你使用synch,否则回调函数永远不会被执行,因为浏览器在ajax调用结束之前就已经消失了.当然,任何同步呼叫都需要被设计为快速或者对用户来说是烦人的. (4认同)