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] Scope JavaScript


Sujet :

AJAX

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2012
    Messages : 10
    Points : 6
    Points
    6
    Par défaut [AJAX] Scope JavaScript
    Salut,

    Nous développons un code JavaScript pour un projet qui doit nous permettre de modifier le mot de passe d'un utilisateur en utilisant une faille XSS.
    Voici le code :
    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
    var id_membre = get_id();
    alert('id membre=' + id_membre);
     
    function get_id()
    {
        var xhr_object = null;
        //déclaration de l'objet xhr_object
     
        var methode = 'GET';
        var page = './profil.php';
        xhr_object.open(methode, page, true);
        xhr_object.onreadystatechange = function()
        { 
            if(xhr_object.readyState == 4)
            {
                if(xhr_object.status == 200)
                {
                    var ancre1 = xhr_object.responseText.indexOf('<input type="hidden" name="id" value="');
                    var ancre2 = xhr_object.responseText.indexOf('" />', ancre1);
                    var id = xhr_object.responseText.substring(ancre1+38, ancre2);                
    		return id;
                }
                else { }
            }
            else {}
        };
        xhr_object.send(null);
    }
    J'ai trouvé que le problème viendrait du caractère asynchrone de l'exécution car tout est exécuté en même temps et Javacript n'attend pas de recevoir les retours des différentes sous-fonctions pour avancer.
    Ainsi, lors de l'exécution, le script renvoie "undefined" comme valeur pour le paramètre "id_membre" sans attendre le retour du substring. Savez-vous comment résoudre ce problème simplement ?
    Merci d'avance de vos réponses

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2012
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    D'accord, si j'ai bien compris, ici JavaScript n'attend que la connexion avec le serveur soit bien établie pour continuer l'exécution du code, et va donc sortir de la boucle if, avant qu'une valeur ne soit affecter au paramètre id et la fonction renvoie donc undefined.
    Y a-t-il un moyen d'attendre que cette connexion soir établie afin d'être sur que quelque chose a été affecté à id ?
    Peut être passer le true à false dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.open(methode, page, true);
    Je vous remercie de votre aide.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Non je crois que Bovino voulait te pousser a réorganiser
    ton code en te disant d'aller voir OU mettre QUOI !
    Pourquoi ne fais tu pas un html différent

    Tu devrais avoir le FORM de saisie, directement dans ton HTML
    il serait alors du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form id='LeForm' name='LeForm'  method='post' onsubmit="get_id(this.id.value);return false" action='' >
    Et dans le AJAX tu affiche l'Alerte lorsque la reponse est 200

    Postes nous ton nouveau code si tu as un probléme
    Christele

Discussions similaires

  1. [AJAX] Soap Ajax classe javascript
    Par sekaijin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/06/2006, 08h50
  2. [AJAX] Script Javascript et Ajax
    Par Azanael dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/05/2006, 22h48
  3. [AJAX] Conflit entre Ajax et Javascript
    Par cocaetjusdorange dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/05/2006, 18h16
  4. [AJAX] Ajax et javascript contenu
    Par zekey dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/09/2005, 20h16
  5. [AJAX] AJAX et javascript
    Par spud5351 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2005, 10h16

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