jQuery Ajax请求async false

时间:2016-06-21 07:59:27

标签: javascript jquery ajax

如果我发送ajax请求,我想知道为什么会出现此错误:

{{1}}

错误:

  

主线程上的同步XMLHttpRequest因不推荐使用   它对最终用户的体验产生不利影响。如需更多帮助,   检查default mapping of the Product entity /。

有问题吗?

谢谢,

6 个答案:

答案 0 :(得分:2)

我想知道为什么会收到此错误

简短的回答是因为ajax中的这个选项:

async: false,

您可能还有其他更好的解决方案。如果您发布有关为什么需要使用Synchronous ajax的更多详细信息?

要么这样使用:

$.ajax({
   url:'',
   type:'post',
   success:function(data){
       // make another ajax call here then    
   }
})

您可以使用jQuery.when()

$.when( $.ajax("/page1.php"), $.ajax("/page2.php") ).done(function(a1, a2) {
    // here you can get both ajax response when both gets completed.
    console.log(a1);
    console.log(a2);
});

此处.done()仅在ajax完成时执行。

答案 1 :(得分:0)

主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。如需更多帮助,请查看https://xhr.spec.whatwg.org/

这只是一个警告,与您的代码无法工作无关

您的代码中存在语法错误,但缺少}

$.ajax({
    url: "testOperation.php",
    async: false,
    data: compareHeure,
    success: function (data, statusRequest) {
    }
});

答案 2 :(得分:0)

您收到警告,因为同步XMLHttpRequest阻止了UI威胁,并且它通常不是一个好的选择(事实上它已被弃用)。

阻止UI威胁会导致任何用户交互延迟和草率可能导致浏览器暂停一段时间。

尽可能使用AJAX进行异步调用并使用回调或承诺来检测呼叫何时具有状态:成功,进度或拒绝(失败)。

示例:

https://jsfiddle.net/sb11heds/

  var jqxhr = $.ajax( "https://fiddle.jshell.net/favicon.png" )
  .done(function() {
    alert( "success" );
  })
  .fail(function() {
    alert( "error" );
  })
  .always(function() {
    alert( "complete" );
  });

 jqxhr.always(function() {
  alert( "second complete" );
})

答案 3 :(得分:0)

就像其他人说的那样,同步XMLHttpRequest线程已弃用

我认为你正在避免异步,因为你可能正在等待呼叫完成然后再做其他事情。您可以改为使用.done之类的回调:

$.ajax({
    url: "testOperation.php",
    data: compareHeure,
    success: function (data, statusRequest) {
    }
}).done(function(data){
  // Do another Ajax or something with the data returned from the Ajax call
})

答案 4 :(得分:0)

不推荐使用同步AJAX调用,因为它们可能会在页面内容加载中产生一些问题。

它也可能导致可视设计失真,因此使用同步AJAX并不是一个好习惯,将来可能无法使用。

答案 5 :(得分:0)

检查你的AJAX调用是否明确地设置为false(async:false)(默认为true - 这是正确的方法),如果没有,那么你可能在浏览器上运行了一些扩展进行同步回拨。简单的识别方法是在Chrome中打开控制台,启用" Log XMLHttpRequests"并且您将能够看到导致问题报告的扩展名。希望这会有所帮助。