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] question avec onreadystatechange


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut [Ajax] question avec onreadystatechange
    Bonjour,
    Je développe un petit moteur de recherche acceptant la saisie semi automatique (autocomplétion) et je suis tombé sur une chose qui me chatouille l'esprit...Peut etre pourrez vous l'éclaircir...

    Alors voici la ligne qui me choque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.onreadystatechange = processStateChange;
    Et voici le code associé à processStateChange :

    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
     
    function processStateChange(){
    	// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    	if (xhr.readyState == 4) {
    		// only if "OK"
    		if (xhr.status == 200) {
    			leselect = xhr.responseText;
    			// On se sert de innerHTML pour rajouter les options a la liste
    			document.getElementById('laposte').innerHTML = leselect;
    		} else {
    			alert("Il y a un probleme:\n" +
    			xhr.statusText);
    		}
    	}
    }
    Le truc, c'est que ce dernier morceau de code est une fonction (à moins que je me trompe...)
    Pourtant quand je fais "xhr.onreadystatechange = processStateChange;" il n'y a pas de parenthéses à processStateChange, ce qui signifie dans la logique de programmation que c'est une variable...
    En fait, ca marche nickel de cette facon mais à partir du moment ou je mets des parenthéses, c'est à dire xhr.onreadystatechange = processStateChange(); mon script ne fonctionne pas sous IE et fonctionne très mal sous firefox...

    J'aurais voulu savoir pourquoi... Est-ce une instruction evenementielle (du genre onClick et les choses comme ca) ??

    Merci d'avance,

    Laurent

  2. #2
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    C'est parce que c'est une référence à cette fonction... elle s'executera au besoin via la méthode

    monObjet.onreadystatechange()

    si tu fais...

    xhr.onreadystatechange = processStateChange();

    la function est éxécutée de suite ce qui n'est pas l'effet recherché... .. .

    @ tchaOo°

Discussions similaires

  1. Question avec $.ajax
    Par Paul75 dans le forum jQuery
    Réponses: 2
    Dernier message: 28/02/2009, 12h31
  2. Petite question avec Procédure??
    Par STRUFIELD dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/12/2005, 09h12
  3. Questions avec les menus
    Par Baptiste Wicht dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 02/12/2005, 20h57
  4. [AJAX] Problèmes avec les caractères accentués
    Par marti dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 26/10/2005, 14h10

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