0

3つの別々のajax呼び出しがあるWebページがあります

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 に答える