IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Pb de listes liées en mode Synchrone sous FireFox


Sujet :

JavaScript

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut [AJAX] Pb de listes liées en mode Synchrone sous FireFox
    Bonjour,

    je n'arrive pas à utiliser AJAX en mode synchrone sous firefox (sous IE : no problem)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function sendXHR(xhr, page, data)
    {	
    	xhr.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhr.readyState == 4)
    		{
    			if(xhr.status == 200)
    			{
    				eval(xhr.responseText);
    			}
    		}
    	}
     
    	xhr.open("POST", page, false);
    	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');	
    	xhr.send(data);
     
    	return;
    };
    Y a-t-il un truc particulier ?

    @+

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Points : 127
    Points
    127
    Par défaut
    Est-ce que, par hasard, tu n'essaierais pas de récupérer le résultat avant d'envoyer la requête au serveur ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    Bonjour,

    ben si je remplace le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(xhr.responseText);
    par :
    - en mode asynchrone --> j'ai bien mon "toto" qui s'affiche
    - en mode synchrone : jamais

    donc je me dis qu'en mode synchrone, je rentre jamais aprés le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(xhr.readyState == 4) ...
    Donc qu'il n'execute rien !!!

    @+

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    Bon bn j'ai fait ccomme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function sendXHR(xhr, page, data, modeAsync)
    {	
    	if(modeAsync == true)
    	{
    		xhr.onreadystatechange = function()
    		{
    			// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    			if(xhr.readyState == 4)
    			{
    				if(xhr.status == 200)
    				{
    					eval(xhr.responseText);
    				}
    			}			
    		}
    	}
     
    	xhr.open("POST", page, modeAsync);
    	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');	
    	xhr.send(data);
     
    	if(modeAsync == false)
    	{
    		if(xhr.readyState == 4)
    		{
    			if(xhr.status == 200)
    			{
    				eval(xhr.responseText);
    			}
    		}
    	}
     
    	return;
    };
    et ça à l'air de marcher ...

  5. #5
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par olive_le_malin
    Bon bn j'ai fait ccomme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function sendXHR(xhr, page, data, modeAsync)
    {	
    	if(modeAsync == true)
    	{
    		xhr.onreadystatechange = function()
    		{
    			// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    			if(xhr.readyState == 4)
    			{
    				if(xhr.status == 200)
    				{
    					eval(xhr.responseText);
    				}
    			}			
    		}
    	}
     
    	xhr.open("POST", page, modeAsync);
    	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');	
    	xhr.send(data);
     
    	if(modeAsync == false)
    	{
    		if(xhr.readyState == 4)
    		{
    			if(xhr.status == 200)
    			{
    				eval(xhr.responseText);
    			}
    		}
    	}
     
    	return;
    };
    et ça à l'air de marcher ...
    Tu viens de mettre le doigt sur la "faute de copie" de FireFox

    Lorsque FireFox a copié l'objet XHR depuis Internet Explorer, il n'a pas pensé au mélange onreadystatechange -- mode synchrone... on voit ce que ca donne

    Comme tu as fait, c'est très bien, et ca marchera sur IE, et sur FF
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ZF 1.11] Zend form & Ajax pour des listes liée
    Par katsuya dans le forum Zend_Form
    Réponses: 0
    Dernier message: 05/11/2012, 10h59
  2. ajax dynamic list event is not defined sous firefox
    Par djanke dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/02/2008, 16h31
  3. Liste et tableau en ligne sous firefox
    Par mkc44 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 19/03/2007, 11h15
  4. [AJAX] : pb en communication Synchrone sous Firefox !
    Par Foub dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/08/2006, 17h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo