Ajax - réception Synchrone et FireFox

Helyis -  
 Koulou -
Bonjour,

j'ai un petit souci de réception des données avec FireFox.
Si mon 'open' est déclaré comme ceci:
xhr.open("POST", "aff.php", true); // donc en asynchrone
ça fonctionne parfaitement.
Si il est déclaré comme ça:
xhr.open("POST", "aff.php", false); // donc en synchrone
ça ne fonctionne plus du tout. Les données sont bien reçues (vues dans la réponse avec FireBug), mais pas affichées.

D'un autre côté, ça fonctionne parfaitement avec Chrome, Opera et Internet Explorer 7.0.
Sur ces browsers autres que FireFox, xhr.open("POST", "aff.php", true); fonctionne quasiment correctement, sauf que de temps en temps, les données n'ont pas le temps de s'afficher. L'utilisation du mode Synchrone était donc la solution.

Quelqu'un aurait-il une idée ?

X.
A voir également:

3 réponses

pyschopathe Messages postés 2053 Statut Membre 135
 
Qu'est-ce que tu veux dire par "les données n'ont pas le temps de s'afficher" ?
1
Helyis
 
Hé bien, d'après ce que j'ai compris des modes Synchrone et Asynchrone, c'est qu'en Asynchrone, le script n'attend pas d'avoir reçu les données pour continuer. De fait, si le .php met trop de temps à répondre, les données n'arrivent pas.
En ce qui me concerne, ça se traduit par le fait que mon <DIV> de destination n'est pas actualisé. Les anciennes données restent affichée. Mais tout se passe bien lorsque je passe en mode Synchrone. Du moins pour les autres browsers que FireFox.

J'ai contourné le problème de la façon suivante:
var ua = navigator.userAgent;
if (ua.match("Firefox")) xhr.open("POST", "aff.php", true);
else xhr.open("POST", "aff.php", false);
mais c'est quand même pas bien normal que FireFox pose des problèmes comme ça.

X.
0
Koulou
 
Essaie quelquechose comme ça:

/****************************************
dt = document.getElementsByTagName('body');
dt[0].style.cursor="wait";
var self=this;

if (window.ActiveXObject)
{
self.xmlHttpReq = new ActiveXObject('Microsoft.XMLHTTP');
}
else if(window.XMLHttpRequest)
{
self.xmlHttpReq = new XMLHttpRequest();

}

self.xmlHttpReq.open("POST", "aff.php", false);
self.xmlHttpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

self.xmlHttpReq.send(tes_params);
dt[0].style.cursor="default";
document.getElementById(ta_divi).innerHTML=self.xmlHttpReq.responseText;

**************************************************/

En esperant que ça t'aide :-)
0