J'ai le problème suivant: L'ordre d'exécution ne se fait pas correctement. Je veux récupérer la valeur de retour d'une fonction (un tableau) dans une autre fonction. à priori c'est très simple, mais ça se complique pour moi à cause de la fameuse ajax.onreadystatechange qui s’exécute d'une manière asynchrone ce qui fait que je peut pas récupérer sa valeur de retour dans le code qui suit:
voila mon code:
var tabImage=new Array;
function remplissageDynamiqueImagesParId(idImag,tabImage)
{
var ajax = new XMLHttpRequest();
ajax.onreadystatechange=function(){
alert("4");
if(ajax.readyState==4 && (ajax.status==200||ajax.status==0)){
eval('var data = ' + ajax.responseText + ';');
var theResults = data.results;
alert("5");
for(var i=0;i<theResults.length;i++)
{
tabImage[i]=new imageFromBase(theResults[i].idImage,theResults[i].url);
}
alert("taille tableau "+tabImage.length);
return tabImage;
}
}
ajax.open("GET","http://localhost/jsonrecuperImagesParId.php?id="+idImag,true);
ajax.send();
alert("fin remplissageDynamiqueImagesParId");
}//fin methode
function test()
{
alert("dans test");
remplissageDynamiqueImagesParId(10,tabImage);
alert("fin test");
alert("taille tableau dans test: "+tabImage.length);
}
remarque: j'ai fait des alerte pour s'assurer de l'ordre de l’exécution des instructions et voila le résultat:
Dans test
4
Fin remplissageDynamiqueImageParId
Fin test
Taille tableau dans test :0
4
Dans test
4
Fin remplissageDynamiqueImageParId
Fin test
Taille tableau dans test :0
4
4
5
Taille tableau 5
4
5
Taille tableau 5
javascript:void(0);javascript:void(0);
l'ordre d’exécution des instructions est incorrecte et je peux pas récupérer mon tableau.
Donc ma question est la suivante: javascript:void(0);
comment je peux bloquer l’exécution jusqu'à ce que ajax.onreadystatechange termine son son travail?
quelqu'un peut m'aider?? javascript:void(0);javascript:void(0);