Jquery вложенное форматирование 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
}
})
}
})
})
}
})
игнорировать скобки, синтаксис не важен для этого вопроса.
Ответы
Ответ 1
Вы можете сделать что-то вроде этого
function ajaxCall1(){
$.ajax({
success: function(){
ajaxCall2();
}
});
}
function ajaxCall2(){
$.ajax({
success: function(){
ajaxCall3();
}
});
}
function ajaxCall3(){
$.ajax({
success: function(){
ajaxCall4();
}
});
}
Ответ 2
Вы можете сделать что-то вроде этого:
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}]
Это может быть рекурсивная функция, которая удаляет элемент, который заканчивается каждым вызовом.