【问题标题】:Jquery ajax warns "Synchronous XMLHttpRequest on the main thread..."Jquery ajax 警告“主线程上的同步 XMLHttpRequest ......”
【发布时间】:2015-06-24 06:11:28
【问题描述】:

我正在使用 JQuery $.ajax 加载 html 内容并发出警告

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

这是我的代码

var html = $.ajax({
    type: "GET",
    url: "http://localhost/loginmodal.php",
    async: false
}).responseText;

$('#' + divID).append(html).trigger("create");

我在某处发现,如果我使用 async: true 选项,可以修复此警告。 但是,当我使用 async: true 选项时,ajax 根本不起作用。如果我使用 async: false 选项,它会给出错误。

情况。

  1. globalFunctions.js 有调用上述代码的实用函数。这个函数只有上面的代码,没有别的。它有一个参数 divID,将在其上加载 ajax html。
  2. home.php 有一个按钮。如果用户单击按钮,这将调用 globalFunctions.js 中的函数。

就是这样! 我使用的唯一库是 JQuery。

感谢您提前回答!

【问题讨论】:

    标签: jquery ajax


    【解决方案1】:

    正如错误所说,问题在于 async: false 设置,它强制同步 ajax 请求。

    处理ajax请求的正确方法是使用回调方法,如

    $.ajax({
        type: "GET",
        url: "http://localhost/loginmodal.php"
    }).done(function (html) {
        $('#' + divID).append(html).trigger("create");
    });
    

    【讨论】:

    • 我将代码更改为您的,但它给出了相同的警告。感谢您,我阅读并理解了什么是异步调用,即 ajax 'A'。这就像多线程行为。无论如何,我认为你的代码没有问题,但我不明白为什么我的代码仍然给出同样的警告。
    【解决方案2】:

    删除 ajax 调用中的 async: false

           async: false
    

    【讨论】:

      猜你喜欢
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 1970-01-01
      • 2015-12-20
      • 2015-06-11
      • 2018-09-09
      相关资源
      最近更新 更多