我要求根据前一次调用的数据连续进行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
}
})
}
})
})
}
})
忽略括号,语法对于这个问题并不重要。
答案 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}]
这可能是一个递归函数,每次调用都会删除一个项目。