【问题标题】:Jquery syncronous ajax call not updating UIJquery同步ajax调用不更新UI
【发布时间】:2016-04-20 19:33:06
【问题描述】:

我有一个同步 ajax 调用,它在循环中执行。我正在尝试在执行任何 ajax 调用之前以及在每个 all 的 done 回调方法上更新 UI。UI 仅在进行所有 ajax 调用后更新。这是我的代码。

$("#warning").text("Do not close this screen!");
    setTimeout(function () { console.log("delay before ajax call") }, 4000);

    var strVale = document.getElementById('CompanyList').value;
    arr = strVale.split(',');
    LoadingPanel.Show();
    for (i = 0; i < arr.length; i++)
    {

        var d = new Date();
        var date = [pad(d.getDate()), pad(d.getMonth() + 1), d.getFullYear()].join('/');
        var time = [pad(d.getHours()), pad(d.getMinutes())].join(':');

        $("#" + arr[i]).text("Started at " + date + " " + time);
        $("#" + arr[i]).css('background-color', 'orange');

        $.ajax({
            type: "GET",
            async: false,
            contentType: "'application/json; charset=utf-8'",
            url: "/url?companyID=" + parseInt(arr[i]),                
        }).done(function (response) {
            // console.log(response);
            if (response.Success) {
                $("#" + response.CompanyID).css('background-color', 'lightgreen');
            }
            else {
                $("#" + response.CompanyID).css('background-color', 'lightpink');
            }

            $("#" + response.CompanyID).text(response.StatusMessage);
        });


    }

    LoadingPanel.Hide();

【问题讨论】:

  • 你有什么问题?您是否检查了 Firebug->Console 是否有任何错误或什么?更多细节会很棒。
  • 同步执行 ajax 调用需要什么?
  • 这是通常的行为:一旦执行下一个(同步)ajax,新添加元素的渲染就会停止。为了在 UI 更新时将 ajax 置于“后台”,请进行异步调用。
  • @satafaka 没有错误,更新应该发生在调用之间,每个ajax的done方法。它发生在所有调用完成后。
  • 你试过 async: true 吗?

标签: javascript jquery ajax user-interface


【解决方案1】:

问题在于你的 async: false 如果你做到了,它会起作用的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2021-03-03
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 2015-01-18
    相关资源
    最近更新 更多