jquery嵌套ajax调用格式

我需要根据前一次调用的数据连续进行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 } }) } }) }) } }) 

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

你可以做这样的事情

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

你可以这样做:

 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和其他数据添加为参数。

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

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

这可以是递归函数,每次调用结束时删除一个项目。