Rechercher : dans
Par :

Ajax - réception Synchrone et FireFox

Dernière réponse le 9 jan 2009 à 11:40:48 Helyis, le 23 oct 2008 à 22:41:48 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « Ajax réception Synchrone et FireFox » dans :
Synchroniser ses contacts iPhone/iPod touch avec Outlook VoirLorsque vous essayez de synchroniser les contacts, la messagerie et/ou le calendrier de votre iPhone/iPod touch sur un PC avec Outlook, iTunes affiche le message d'erreur suivant : Soit il n'existe pas de client de messagerie par défaut, soit...
Optimiser Firefox VoirOptimisation avec Haut Débit Si votre ordinateur a un processeur peu puissant Optimiser l'utilisation de la mémoire Logiciel d'optimisation de Firefox J'ai fait une fausse manipulation J'ai créé une valeur/chaîne de trop J'ai mal attribué...
[Mozilla Firefox] Sauvegarder les paramètres VoirSauvegarder / Restaurer les paramètres de Firefox, les marque-pages, historique et les extensions installées Commencez par afficher les fichiers cachés. Sous Vista, il faut s'approprier le dossier C:\users\Utilisateur*\Application Data pour...
Télécharger SyncBack VoirSyncBack est un logiciel de synchronisation de répertoires. Il peut être utilisé: pour effectuer des backups de fichiers (copies de sauvegarde) pour synchroniser des répertoires entre ordinateurs. pour synchroniser des clés USB ou disques...
AJAX (Asynchronous Javascript And XML) VoirIntroduction à AJAX AJAX (Asynchronous Javascript And XML, traduisez Javascript asynchrone et XML) est une méthode de développement web basée sur l'utilisation d'un script Javascript pour effectuer des requêtes web à l'intérieur d'une page web...
AJAX (Asynchronous Javascript And XML) VoirAvantages liés à AJAx Les sites web utilisant AJAX bénéficient des avantages suivants : Une interface réactive car AJAX permet de modifier localement la page web ; Une rapidité d'exécution car seules les données à modifier dans la page sont...

1

pyschopathe, le 23 oct 2008 à 22:46:53
  • +1

Qu'est-ce que tu veux dire par "les données n'ont pas le temps de s'afficher" ?

Répondre à pyschopathe

2

Helyis, le 23 oct 2008 à 23:17:35

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.

Répondre à Helyis

3

 Koulou, le 9 jan 2009 à 11:40:48

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 :-)

Répondre à Koulou