J'utilise des requêtes xml http request sur mon site. Je l'ai entièrement développé en local avec les mêmes versions de php/mysql (mais pas forcément les mêmes réglages).
En local, chaque requête renvoie bien quelque chose. Une fois, en ligne, je ne reçoit qu'une réponse sur 10, et encore.
J'ai récupérer un code qui se charge simplement de ces requêtes. Est-ce lui qui est en cause ?
Mon code
Code:
//Dans la page php que voit l'utilisateur
var check_delay=200;
var tab_req=new Array(); //Je pourrais m'en passer, mais cela permet plusieurs requêtes simultanées, ce que je n'ai pas encore tenté. Je me limite à un seul appel concurrent, au moins pour l'instant
function appelHttpRequest(ID)
{
var postdata="ID="+ID;
tab_req[0]=new CreateXMLHTTPRequestObject();
tab_req[0].setIndicatorFunction(toggleIndicator);
if(!tab_req[0].getFilePost("xhr_page.php",postdata))
{
alert(unescape("Une erreur s'est produite"));
return;
}
setTimeout("checkReponse()",check_delay);
}
function toggleIndicator(bflag)
{
//fait apparaitre/disparaitre un DIV pour patienter
}
function checkReponse()
{
if(tab_req[0]&&tab_req[0].hasResponse())
{
var rep=tab_req[0].getResponse();
tab_req[0].validateRequest();
tab_req.splice(0,1);
if (rep.substring(0,3)=="ERR")
{
alert("Une erreur est survenue);
return;
}
alert("OK"));
}
}
La page xhr_page.php fait toujours bien son boulot et termine par un echo "OK " ou echo "ERR code erreur" (je vais améliorer les erreurs, mais il faudrait déjà que ça marche).
Le problème c'est que 9 fois sur 10, la fonction checkReponse() n'est jamais appelé, même après le délai max. Par contre, le fonction toggleIndicator() fait bien son travail en affichant puis faisant disparaitre le message d'attente.
Le pire, c'est que si je rajoute une simple alert("coucou"); au début de la fonction checkReponse(), je reçois
presque toujours une réponse.
J'ai essayé avec firefox, IE32 et IE64, rien à faire.
Quelqu'un pourrait-il me donner un coup de main pour résoudre ce problème ?