当多个Ajax调用不应该是

时间:2015-10-28 07:13:43

标签: javascript jquery ajax

我有一个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);
        });
    });

我打算让所有请求都是异步的,并且相信我所写的内容应该完成这项任务。请帮我确定哪里出错,以及为什么我收到上述错误!

1 个答案:

答案 0 :(得分:2)

您的第一个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!");
        }
    });

这应修复您的警告信息