Je suis nouveau sur Ajax et je tente d’utiliser Ajax avec une boucle for. Après l'appel Ajax, j'exécute une fonction qui utilise les variables créées dans l'appel Ajax. La fonction ne s'exécute que deux fois. Je pense que l'appel Ajax n'aura peut-être pas assez de temps pour faire l'appel avant que la boucle ne recommence. Est-il possible de confirmer l'appel Ajax avant d'exécuter la fonction printWithAjax ()? Je ne veux pas que la fonction printWithAjax () soit exécutée tant que l'appel Ajax n'est pas terminé. Toute aide sera grandement appréciée.
var id;
var vname;
function ajaxCall(){
for(var q = 1; q<=10; q++){
$.ajax({
url: 'api.php',
data: 'id1='+q+'',
dataType: 'json',
async:false,
success: function(data)
{
id = data[0];
vname = data[1];
}
});
printWithAjax();
}//end of the for statement
}//end of ajax call function
Essayez ce code:
var id;
var vname;
function ajaxCall(){
for(var q = 1; q<=10; q++){
$.ajax({
url: 'api.php',
data: 'id1='+q+'',
dataType: 'json',
async:false,
success: function(data)
{
id = data[0];
vname = data[1];
},
complete: function (data) {
printWithAjax();
}
});
}//end of the for statement
}//end of ajax call function
La fonction "complete" ne s'exécute qu'après le "succès" de ajax. Essayez donc d'appeler le printWithAjax () sur "complete". Cela devrait fonctionner pour vous.
Vous pouvez utiliser .ajaxStop()
ou .ajaxComplete()
.ajaxComplete()
se déclenche après l'achèvement de chaque demande AJAX sur votre page.
$( document ).ajaxComplete(function() {
yourFunction();
});
.ajaxStop()
se déclenche une fois toutes les demandes AJAX effectuées sur votre page).
$( document ).ajaxStop(function() {
yourFunction();
});
Ajouter .done () à votre fonction
var id;
var vname;
function ajaxCall(){
for(var q = 1; q<=10; q++){
$.ajax({
url: 'api.php',
data: 'id1='+q+'',
dataType: 'json',
async:false,
success: function(data)
{
id = data[0];
vname = data[1];
}
}).done(function(){
printWithAjax();
});
}//end of the for statement
}//end of ajax call function
Vous devez définir async = false en tête. Utilisez post/get au lieu de ajax.
jQuery.ajaxSetup ({async: false});
$.post({
url: 'api.php',
data: 'id1=' + q + '',
dataType: 'json',
success: function (data) {
id = data[0];
vname = data[1];
}
});
essayer
var id;
var vname;
function ajaxCall(){
for(var q = 1; q<=10; q++){
$.ajax({
url: 'api.php',
data: 'id1='+q+'',
dataType: 'json',
success: function(data)
{
id = data[0];
vname = data[1];
printWithAjax();
}
});
}//end of the for statement
}//end of ajax call function