Jquery ajax async“True”不能正常工作

时间:2016-08-30 19:42:37

标签: jquery

function loadDropDown(targetControl, url, type,data)
{
 $.ajax({
            url: url,
            type: type,
            data: data,
            cache: false,
            async:true,
            dataType: 'json',
            success: function (data) {
             "do some thing."
            },error: function (data) {
             "do some thing."
            }
      });
}

并致电

loadDropDown ('#CountryId', '/Common/Country','GET');
loadDropDown('#StateId', '/Common/State','GET',data);
loadDropDown('#District', '/Common/District','GET',data);

2 个答案:

答案 0 :(得分:3)

loadDropDown应该返回一个promise,你可以在解析promise时调用下一个函数。

function loadDropDown(targetControl, url, type,data)
{
    return $.ajax({
            url: url,
            type: type,
            data: data,
            cache: false,
            async:true,
            dataType: 'json',
            success: function (data) {
             "do some thing."
            },error: function (data) {
             "do some thing."
            }
      });
}

loadDropDown('#CountryId', '/Common/Country','GET').then(function() {
    loadDropDown('#StateId', '/Common/State','GET',data).then(function() {
        loadDropDown('#District', '/Common/District','GET',data);
    })
});

答案 1 :(得分:0)

async: true是默认设置,意味着在后台按任意顺序发生。

根据标题中的问题,您希望async: false代码同步。

如果这不准确,请填写更多详细信息。

由于您在异步时需要同步行为,请尝试在第一个成功回调中调用第二个load()函数。它需要一些仔细的编码以避免无限循环。

只需一秒钟,我将以一个例子更新我的回答。

编辑:@Barmar打了一拳,尝试他们的解决方案!