J'ai l'obligation de passer successivement 6 appels ajax en fonction des données de l'appel précédent. Je niche chaque appel dans le succès de l'appel précédent. Ma question est: quels sont les bons moyens de formater le code pour qu’il ne finisse pas avec un million de lignes sur mon éditeur?
$.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
}
})
}
})
})
}
})
ignorer les crochets, la syntaxe n’est pas importante pour cette question.
Vous pouvez faire quelque chose comme ça
function ajaxCall1(){
$.ajax({
success: function(){
ajaxCall2();
}
});
}
function ajaxCall2(){
$.ajax({
success: function(){
ajaxCall3();
}
});
}
function ajaxCall3(){
$.ajax({
success: function(){
ajaxCall4();
}
});
}
Vous pouvez faire quelque chose comme ça:
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"}));
Vous pouvez ajouter l'URL et d'autres données en tant que paramètres.
Une autre idée est de créer une fonction qui reçoit un tableau comme celui-ci:
[{url:'url1', cb:function1},{url:'url2',cb:function2}]
Cela pourrait être une fonction récursive qui supprime un élément à la fin de chaque appel.