如何使用单个ajax方法处理同时的ajax响应?

时间:2014-07-24 12:46:08

标签: javascript jquery ajax

处理ajax的方法

function ajaxMethod(){
    return $.ajax({
        url: ajaxUrl,
        type: "POST",
        dataType: "JSONP",
        jsonpCallback: ajaxCallback
    });
}

调用此方法:

dD(ajaxMethod());
aA(ajaxMethod());
bB(ajaxMethod());
cC(ajaxMethod());

aa,bb,cc,dd方法有

promise.success(function (response) {
    console.log(response);
});

现在aA响应进入bB功能,bb响应cc功能和同时呼叫即将到来。 也尝试使用async true没有任何反应。 有什么建议吗?

3 个答案:

答案 0 :(得分:1)

使用jsonpCallback,您告诉jQuery为回调函数使用特定的函数名称(而不是生成唯一的函数名称),因此每次调用它时,都会覆盖以前的函数。

只需删除jsonpCallback: ajaxCallback


当您使用它时,请删除type: "POST",,它与JSONP不兼容。

答案 1 :(得分:0)

我认为这就是你所追求的。

此代码使用返回的promise等待结果,然后将结果传递给其他函数。

ajaxMethod().success(function(response)
{
    dD(response);
});

ajaxMethod().success(function(response)
{
    aA(response);
});

ajaxMethod().success(function(response)
{
    cC(response);
});

ajaxMethod().success(function(response)
{
    dD(response);
});

您的aA,bB,cC和dD方法现在可以是:

function <insertname>(response)
{
    console.log(response);
}

答案 2 :(得分:-1)

如果您希望您的请求以同步方式进行,请尝试以下操作:

var callBack = $.Callbacks();

callBack.add(dD(ajaxMethod()));
callBack.add(aA(ajaxMethod()));
callBack.add(bB(ajaxMethod()));
callBack.add(cC(ajaxMethod()));
callBack.fire();

上面的代码行将确保相应的ajax调用将被调用。

相关问题