Javascript 多个Ajax调用似乎被视为同步请求,而不应该这样做

Javascript 多个Ajax调用似乎被视为同步请求,而不应该这样做,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个Ajax请求,它会在成功时更改输入字段的内容。该输入字段在更改时触发另一系列Ajax请求。代码可以工作,但根据Chrome中的控制台,有报道称“主线程上的同步XMLHttpRequest因其对最终用户体验的有害影响而被弃用”。此错误消息似乎表示正在进行同步请求 代码如下: $.ajax({ type: 'GET', url: '/widgets/test', async: true, success: functio

我有一个Ajax请求,它会在成功时更改输入字段的内容。该输入字段在更改时触发另一系列Ajax请求。代码可以工作,但根据Chrome中的控制台,有报道称“主线程上的同步XMLHttpRequest因其对最终用户体验的有害影响而被弃用”。此错误消息似乎表示正在进行同步请求

代码如下:

    $.ajax({
        type: 'GET',
        url: '/widgets/test',
        async: true,
        success: function (response) {
            $("#widgetData").val(JSON.stringify(response));
            $("#widgetData").trigger("change");
        },
        error: function (xhr, textStatus, errorThrown) {
            console.log("There was a problem requesting the widget endpoint!");
        }
    });

    $("#widgetData").change(function () {
        var obj = jQuery.parseJSON($("#widgetData").val());
        $.each(obj, function (id, url) {
            $("#mainContent").append("<div class='widget' id='widget" + id + "'></div>");
            $("#widget" + id).load(url);
        });
    });
$.ajax({
键入:“GET”,
url:“/widgets/test”,
async:true,
成功:功能(响应){
$(“#widgetData”).val(JSON.stringify(response));
$(“#widgetData”)。触发器(“更改”);
},
错误:函数(xhr、textStatus、errorshown){
log(“请求小部件端点时出现问题!”);
}
});
$(“#widgetData”).change(函数(){
var obj=jQuery.parseJSON($(“#widgetData”).val();
$.each(对象、函数(id、url){
$(“#主要内容”)。追加(“”);
$(“#小部件”+id).load(url);
});
});

我希望所有的请求都是异步的,并且相信我所写的应该能够完成这项任务。请帮助我确定什么是错误的,以及为什么我会出现上述错误

您的第一个
ajax
请求似乎正在将
async
标志设置为
false
。您可以将该调用更改为以下命令

$.ajax({
        type: 'GET',
        async: true, 
        url: '/widgets/test',
        success: function (response) {
            $("#widgetData").val(JSON.stringify(response));
            $("#widgetData").trigger("change");
        },
        error: function (xhr, textStatus, errorThrown) {
            console.log("There was a problem requesting the widget endpoint!");
        }
    });

这应该可以修复您的警告消息

可能重复的感谢@Manish,但我已经尝试显式设置“async:true”,并继续遇到问题。触发警告的是$.ajax调用还是$.load?我很确定是加载。如果我取消加载调用,就不会有错误。你确定这就是全部代码吗?不是其他触发警告的东西吗?我创建了一个JSFIDLE,它模仿您的代码,并且没有任何问题:默认情况下,async为true,所以“第一个ajax请求将async标志设置为false”只是一个随机猜测