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] fonctionnement uniquement en mode synchrone


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut [AJAX] fonctionnement uniquement en mode synchrone
    Bonjour,
    Voici le code que j'utilise:
    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
    function ajax(nomduchamp,valeur,id){
    	if (window.XMLHttpRequest) { // Mozilla, Safari,...
    		requeteAJAX = new XMLHttpRequest();
    		if (requeteAJAX.overrideMimeType) {
    			requeteAJAX.overrideMimeType('text/xml');
    		}
    	} else if (window.ActiveXObject) { // IE
    		try {
    			requeteAJAX = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e) {
    			try {
    				requeteAJAX = new ActiveXObject("Microsoft.XMLHTTP");
    			} catch (e) {}
    		}
    	}
    	if (!requeteAJAX) {
    		alert('Abandon : Impossible de créer une instance XMLHTTP');
    		return false;
    	}	
    	requeteAJAX.open("GET","req_maj_aff.php?nomduchamp="+nomduchamp+"&valeur="+escape(valeur)+"&id="+id,true) ;
    	requeteAJAX.send(null);
    	requeteAJAX.onreadystatechange = function() {
    		if(nomduchamp == "nb_cdts" && requeteAJAX.readyState == 4){
    			var div_ori = document.getElementById('select_ori');
    			div_ori.innerHTML = "<option>test</option>";
    		}
    	};
    }
    L'objectif est : suite à la modification d'un champ d'un formulaire d'une page web, je mets à jour la base de données et j'actualise l'élément de formulaire concerné. Pour la mise à jour de la base j'appelle la page req_maj_aff.php avec les paramètres qui vont bien. Cette fonction marche correctement.
    Ce que je n'arrive pas à faire c'est mettre à jour l'affichage des éléments de formulaire de ma page.
    j'ai notamment une liste dont voici le code d'affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    echo "<select id=\"select_ori\" name=\"ori[]\" size=\"".$numrow_ori."\" multiple=\"multiple\">";
    	for($i=0; $i<$numrow_ori; $i++){
    		$eta = mysql_result($query_ori,$i,'eta');
    		$cdts = mysql_result($query_ori,$i,'nb_cdts');
     
    		echo"<option value=\"".$eta." - ".$cdts."\">".$eta." ( ".$cdts." )</option>";
    	}
    	echo "</select>";
    Ceci me permet d'alimenter cette liste avec les données d'une base. Le code est en PHP. Sur un autre élément du formulaire j'appelle la fonction ajax('nb_cdts',this.value,'1') sur la commande onblur de cet élément.
    Deux questions:
    1) Ceci ne fonctionne que en mode synchrone (requeteAJAX.open("GET","req_maj_aff.php?nomduchamp="+nomduchamp+"&valeur="+escape(valeur)+"&id="+id,true) ;
    Si on remplace le 'true' à la fin par un 'false' (ce qui correspond alors au mode asynchrone) ça ne fonctionne plus. Pourquoi?

    2)Pourquoi ma liste n'est-elle pas mise à jour? Je devrais normalement obtenir une liste avec une seule valeur 'test'.

    Merci

  2. #2
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Je viens de trouver un élément de réponse : il faut utiliser une balise div qui englobe le select.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Attention:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    true ==> asynchrone
    false ==> synchrone

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/08/2013, 17h21
  2. [AJAX] Pb de listes liées en mode Synchrone sous FireFox
    Par olive_le_malin dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/12/2006, 17h28
  3. [AJAX] Ajax en mode synchrone sur Safari
    Par The Blec dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/02/2006, 17h52
  4. Applications fonctionnent uniquement en mode administrateur
    Par gil-ch dans le forum Bases de données
    Réponses: 4
    Dernier message: 01/06/2004, 13h58

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