0

我有一个网页,其中有 3 个单独的 ajax 调用

所有 3 都使用相同的结构: $.ajax({ //这是处理数据并发送邮件的 php 文件 url: url,

        //POST method is used
        type: "POST",

        //pass the data         
        data: data,     

        //Do not cache the page
        cache: false,

        //success
        success: function (json) {              

我想触发另一个函数,但前提是 3 个单独的 ajax 调用成功。

我该怎么做呢?

更新:我现在在使用 $.when() 时遇到问题

我的代码现在看起来像这样:

function mainFunction() {
    $.when(someAjaxCall()).done(function(ajaxResult){
            // after all the pages, covers, and sneaks are uploaded
            // we will now change the status
            //start the ajax
            console.log(ajaxResult);
}

function someAjaxCall() {
    // do something...
    if (someGlobalScopedVariable == true) {
         return $.ajax({
        //this is the php file that processes the data and send mail
        url: url,

        //POST method is used
        type: "POST",

        //pass the data         
        data: data,     

        //Do not cache the page
        cache: false,

        //success
        success: function (json) {....},
     });
    }
}

mainFunction $.when 中的 ajaxResult 给了我未定义的。我做错了什么是因为我遵循了这个http://api.jquery.com/jQuery.when/

4

1 回答 1

8

使用jQuery.when.

var deferred1 = $.ajax({ ... });
var deferred2 = $.ajax({ ... });
var deferred3 = $.ajax({ ... });

$.when(deferred1, deferred2, deferred3).then(
    function(info1, info2, info3) {
        var response1 = info1[0], response2 = info2[0], response3 = info3[0];
        // Do something with response 1, 2, and 3...
    }
);

$.ajax返回一个Deferred对象。您可以将多个Deferred对象传递给以$.when等待所有对象完成。

于 2012-10-05T22:54:17.977 回答