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 :

fonction qui ne retourne rien, comment c'est possible ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 57
    Par défaut fonction qui ne retourne rien, comment c'est possible ?
    Bonjour à tous,

    je ne comprend pas j'ai une fonction ajax qui est censée me retourner responseText, je suis bien dans la boucle else if(reponse == "return") vu que j'ai l'alert alert(xhr.responseText); qui s'affiche bien.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    fonction Test()
    {
    // du code ...
    else if(reponse == "return")
                            {
                                    alert(xhr.responseText); // AFFICHAGE DE ok
                                    return(xhr.responseText); // on devrait retourner ok
                            }
    }
    pourtant quand je récupère la valeur retournée c'est : undefined

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert( Test() ); // AFFICHAGE DE undefined
    je ne vois vraiment pas d'où ca peut venir :'(

  2. #2
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Par défaut
    Poste tout ton code stp

  3. #3
    Membre expérimenté Avatar de Ikonic
    Inscrit en
    Février 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 197
    Par défaut
    salut,

    et si tu déclares une variable ayant pour valeur xhr.responseText ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    fonction Test()
    {
    // du code ...
    else if(reponse == "return")
                            {
                                    alert(xhr.responseText); // AFFICHAGE DE ok
                                    machin = xhr.responseText;
                                    return(machin); // on devrait retourner ok
                            }
    }
    et donc :

  4. #4
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Par défaut
    Ici tu déclares une constante, et non pas une variable, d'autre part, c'est quoi l'interêt de faire un return dans ce cas la? Si la valeur retournée est accessible dans le scope global/window aucun intérêt.

    Ce qui ne veut pas dire que c'est une bonne pratique pour autant

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    machin est déclarée quelquepart ? avant ? en global ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 57
    Par défaut
    voici mon code complet

    J'ai une page php qui execute une fonction ajax EnvoieFormulaire située dans un fichier ajax.js que j'inclu, le problème c'est que je ne recois aucun retour

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    function EnvoieFormulaire(form,page,param,reponse,calque)
    {
            function getXhr()
            {
                    var xhr = null;
                    if(window.XMLHttpRequest) // Firefox et autres
                    xhr = new XMLHttpRequest();
                    else if(window.ActiveXObject)
                    { // Internet Explorer
                            try
                            {
                                    xhr = new ActiveXObject("Msxml2.XMLHTTP");
                            }
                            catch (e)
                            {
                                    xhr = new ActiveXObject("Microsoft.XMLHTTP");
                            }
                    }
                    else
                    { // XMLHttpRequest non supporté par le navigateur
                            alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                            xhr = false;
                    }
                    return xhr
            }
     
     
            var xhr = getXhr()
            // On défini ce qu'on va faire quand on aura la réponse
            xhr.onreadystatechange = function()
            {
                    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
                    if(xhr.readyState == 4 && xhr.status == 200)
                    {
                            if(reponse == "alert")
                                    alert(xhr.responseText);
                            else if(reponse == "html")
                                    ChargePage(page, input+textarea+selects+"&"+param, '', '', calque);
                            else if(reponse == "return")
                            {
                                    alert(xhr.responseText); // AFFICHAGE DE OK
                                    return(xhr.responseText); // on devrait retourner ok
                            }
                    }
            }
            xhr.open("POST",page,true);
     
            // Obligatoire pour transmettre des données en POST
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
     
            if(form != "")
            {
                    formulaire = document.getElementById(form);
     
                    // input
                    var TabInput = formulaire.getElementsByTagName('input');
                    var input ="input=input";
                    for(var i=0; i<TabInput.length; i++)
                    {       if( TabInput[i].type!="checkbox" || TabInput[i].checked == true )
                                    input+= "&"+TabInput[i].name+"="+TabInput[i].value;
                    }
     
                    // textarea
                    var textarea = "";
                    var TabTextarea = formulaire.getElementsByTagName('textarea');
                    for(i=0; i<TabTextarea.length; i++)
                            textarea+= "&"+TabTextarea[i].name+"="+TabTextarea[i].value;
                    textarea = textarea.replace(/\n/gi,"<br />");
     
                    // select
                    var selects = "";
                    var TabSelects = formulaire.getElementsByTagName('select');
                    for(i=0; i<TabSelects.length; i++)
                            selects+= "&"+TabSelects[i].name+"="+TabSelects[i].value;
            }
            else
            {
                    var input ="input=input";
                    var textarea = "";
                    var selects = "";
            }
            // Envoie de toutes les données 
            xhr.send(input+textarea+selects);
    }
    Ici l'alert m'affiche ok

    dans ma page php, une fonction javascript utilise la fonction EnvoieFormulaire et doit récupérer le retour mais j'obtient undefined

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(EnvoieFormulaire(form,'Pages/Login/authentification2.php','','return',''));
    Je ne vois pas du tout d'où ca peut venir :S

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

Discussions similaires

  1. une fonction qui ne retourne rien
    Par blackvicking dans le forum AppleScript
    Réponses: 3
    Dernier message: 07/12/2013, 20h54
  2. Requete SQL qui ne retourne rien alors que ma table n est pas vide
    Par adelsunwind dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/06/2009, 19h16
  3. Requête qui ne retourne rien
    Par afrique dans le forum Administration
    Réponses: 4
    Dernier message: 02/10/2006, 18h19
  4. [MySQL] Requête qui ne retourne rien
    Par baleiney dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/06/2006, 18h29
  5. SELECT qui ne retourne rien à cause d'anti-slash
    Par mikyfpc dans le forum Outils
    Réponses: 8
    Dernier message: 07/08/2005, 23h04

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