jquery嵌套ajax调用格式

时间:2014-03-06 19:05:39

标签: jquery ajax formatting

我要求根据前一次调用的数据连续进行6次ajax调用。我在前一个电话的成功中嵌套了每个电话。我的问题是什么是格式化代码的好方法,以便它不会在我的编辑器中结束一百万行?

 $.ajax({
                type: "POST",
                url: "someScript/someScript.php",
                data: form + "&func=build",
                success: function (result) {
                 if (result == "ok")
                 {
                   $.ajax({
                   type: "POST",
                   url: "someScript/someScript.php",
                   data: form + "&func=someOtherFunc",
                   success: function (result) {
                        if (result == "ok")
                        {
                          $.ajax({
                           type: "POST",
                           url: "someScript/someScript.php",
                           data: form + "&func=someOtherFunc",
                           success: function (result) {
                           if (result == "ok")
                           {
                             .....and so on
                           }
                           })
                         }
                      })
                    })
                   }
                 })

忽略括号,语法对于这个问题并不重要。

2 个答案:

答案 0 :(得分:35)

你可以做这样的事情

function ajaxCall1(){
    $.ajax({
        success: function(){
            ajaxCall2();
        }
    });
}
function ajaxCall2(){
    $.ajax({
        success: function(){
            ajaxCall3();
        }
    });
}
function ajaxCall3(){
    $.ajax({
        success: function(){
            ajaxCall4();
        }
    });
}

答案 1 :(得分:0)

您可以这样做:

var url = '/echo/json/';
var dados = {acao: acao,codigo: null};

function funcao1(json,data)
    $.post(url, data, function(json){
        return json;
    }).fail(function() {
        alert("deu erro");
    });
}

alert(funcao1(funcao1(funcao1(),{id:"id1"}),{id:"id1"}));

您可以将网址和其他数据添加为参数。

另一个想法是创建一个接收如下数组的函数:

[{url:'url1', cb:function1},{url:'url2',cb:function2}]

这可能是一个递归函数,每次调用都会删除一个项目。