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

AJAX Discussion :

[AJAX] Comment lancer 2 fois send() dans la même page


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Par défaut [AJAX] Comment lancer 2 fois send() dans la même page
    Salut tout le monde, j'ai écrit 2 programmes en ajax pour vérifier l'existence de nom d'utilisateur et le code captcha.

    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
    35
    36
    37
    38
     
    var xmlhttp = getXMLHttpRequest();
    if(xmlhttp == null){
    	window.alert("Navigateur ne supporte pas ajax");
    	return;
    }
     
    xmlhttp.open("GET", "ajax/user_exists.php?username=" + username.value, true);
    xmlhttp.onreadystatechange = function(){
    	if(xmlhttp.readyState == 4){
    		var response = xmlhttp.responseText.parseJSON();
    		if(response.result == true){
    			window.alert("Nom d'utilisateur existe");
    			username.select();
    			return;
    		} else if(typeof(response.result) == "string"){
    			window.alert("Message d'erreur: "+response.result);
    			return;
    		}
    	}
    };
    xmlhttp.send(null);
     
    var captchaCode = document.getElementById("captcha_code");
    xmlhttp.open("GET", "ajax/check_captcha.php?captcha_code=" + captchaCode.value, true);
    xmlhttp.onreadystatechange = function(){
    	if(xmlhttp.readyState == 4){
     
    		var response = xmlhttp.responseText.parseJSON();
     
    		if(response.result == false){
    			window.alert("Code captcha incorrect");
    			captchaCode.select();
    			return;
    		}
    	}
    };
    xmlhttp.send(null);
    le problème est que si j'enlève la 2e partie( la partie qui vérifie le code captcha), il fonctionne. mais si je la laisse, le programme il vérifie plus l'existence de nom d'utilisateur.

    Je pense que c'est peut être le programme n'a pas le temps pour finir la vérification de nom d'utilisateur, et il passe immédiatement à la vérification du code captcha.

    Mais je ne suis pas sûr.

    j'aimerais savoir si quelqu'un saurait résoudre ce problème, merci d'avance!

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Par défaut
    Je pense que c'est peut être le programme n'a pas le temps pour finir la vérification de nom d'utilisateur, et il passe immédiatement à la vérification du code captcha.
    Tu as tout juste.

    En fait, ton code fait ceci :
    1. créer un objet xmlhttp
    2. modifie l'évènement onreadystatechange de l'objet xmlhttp
    3. demande à l'objet xmlhttp d'appeler la page "ajax/user_exists.php"
    4. modifie l'évènement onreadystatechange de l'objet xmlhttp
    5. demande à l'objet xmlhttp d'appeler la page "ajax/check_captcha.php"

    Ce que tu oublies, c'est que les requêtes se font de manières asynchrones.
    Ainsi, la deuxième requête que tu as faite écrase la première dont le résultat n'est pas évalué.

    Pour résoudre le problème, il y a 3 solutions.
    Soit tu invoques la seconde URL lors du traitement de la réponse de la première requête.
    Soit tu crées 2 objet XmlHttpRequest.
    Soit tu invoque un script php qui évalue les deux conditions.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Par défaut
    Soit tu invoques la seconde URL lors du traitement de la réponse de la première requête
    Merci beaucoup jeremya, je pense que j'utiliserai cette solution.

Discussions similaires

  1. [AJAX] comment lancer un refresh manuel de ma div ?
    Par BOST550 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 18/10/2008, 09h58
  2. [VB.NET] Comment lancer une application externe dans ma Form
    Par afdmats dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/10/2006, 15h27
  3. Réponses: 7
    Dernier message: 31/08/2006, 18h03
  4. Comment lancer un script perl dans un script perl
    Par kiza dans le forum Langage
    Réponses: 3
    Dernier message: 21/10/2005, 21h02
  5. Réponses: 2
    Dernier message: 19/07/2005, 14h14

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