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 Ajax probleme


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut [AJAX] fonctionnement Ajax probleme
    bonjour

    mon probleme est le suivant j'ai besoin de recuperer des infos d'un input file puis de faire une requete et ensuite de poser une question en fonction de cette requete de type confirm

    donc je me suis dit ajax tous se passe bien cad

    je recupere bien les infos je lance bien l'ajax puis ma requete se passe bien je recupere l'info de ma requete dans le onreadystatechange function et j'y lance le confirm et la valeur de retour je la renvoi en "return confirm('toto')" en gros

    ma question c'est ou va se return


    car je fai un onSubmit qui appel ma fonction gerant tout l'ajax la creation du xhr la fonction comme expliquez au dessus mais lorsque je li ma valeur de retour j'ai undefined du coup le formulaire se lance quelque soit ma reponse au confirm or je ne voudrai pas ce fonctionnement

    en gros 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
     
     
    // ok clic sur bouton submit
    onSubmitbt(){
    //du code
    //.... puis l'appel ajax
    ok=ajaxfct();
     
    return ok;
    }
     
     
     
    ajaxfct(){
    xhr=getxhr();
    onReadyStateChange function{
        if( valuer 400 et valeur 200){
            resp=xhr.responsetexte;
            if(resp== "true"){return confirm('toto');}
        } 
    }
    //appel a la page php on se trouve ma requete pour la reponse
    }
    voila le code en gros j'ai pas detailler car je pense pas que se soit une erreur de code mais plus d'utilisation a cause de l'asynchrone car il fait le return ok avant que le confirm 'toto' passe en gros

    si quelqu'un a une idée

    merci

  2. #2
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Il ne faut pas faire d'appel asynchorne dans ce cas la sinon c'est pas possible
    et de plus il ne faut pas faire le return dans la fonction onReadyStateChange mais dans la méthode ajaxfct

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    ok mais je fais comment pour faire tous ca car la je voi vraiment pas

    merci

  4. #4
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    a teste mais la tu verifie pas que la reponse est bien arriver
    il voudrai pa mieux rajouer une boucle pour verifier ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(xhr.readyState != 4 && xhr.status != 200){}{
    tu en pense quoi?

  6. #6
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    ne fait surtout pas un while !!
    et ce n'est pas la peine de vérifier l'etat (readyState) car en mode synchrone, normalement tu est toujours dans l'etat 4 (chargement de la page terminé)
    Par contre tu peux effectivement controler le statut pour vérifier qu'il n'y a pas d'erreur (comme la fameuse erreur 404)

    mais fait un simple traitement d'erreur avec un if...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    ben j'ai deux trois test et si je fai pa d'attente ma reponse c'est "" rien du tout que si je fai une attente de readystate 4 c'est ce que je desire sauf que comme prevu le navigateur di qu'il a peut etre planter

    donc comment faire?

    car pour moi faut que j'attende que la reponse soit valide avant de la lire et mon test me montre bien ca

  8. #8
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    lorsque tu ouvres ton xmlHttpRequest tu positionne correctement le flag pour qu'il soit synchrone ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http_request.open("POST", "test.html", true);

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

Discussions similaires

  1. [MooTools] AJAX fonctionne en local mais pas sur serveur
    Par LionL dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 07/12/2007, 22h52
  2. Ajax fonctionne sur un PC et pas sur un autre
    Par dubitoph dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/10/2007, 10h24
  3. AJAX : Fonctionne en local mais pas sur serveur distant ?
    Par jejefeds dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 19/06/2007, 14h26
  4. [AJAX] Ajax fonctionne sur onblur mais pas sur onkeypress
    Par julien.63 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/01/2007, 15h14
  5. [AJAX] Code tuto Ajax fonctionne pas sous FF, mais IE et OP sont OK
    Par hugo69 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 08/01/2007, 21h27

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