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] Envoyer des paramètres avec une requête XmlHttpRequest


Sujet :

AJAX

  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut [AJAX] Envoyer des paramètres avec une requête XmlHttpRequest
    Bonjour à tous.

    Je ne suis visiblement pas trés doué en Ajax car je n'arrive pas à faire un truc simple que j'ai trouvé dans le tuto de référence, celui là : http://siddh.developpez.com/articles/ajax/

    Je programme en ASP.NET, option VB.NET.

    J'ai fais une page qui contient une fonction Javascript pour envoyer vers une page ASPX une requête XmlHttpRequest. Tatn que j'envoi rien de particulier avec, tout va bien.
    Mais bien sûr, le besoins est tout autre et il faut que j'envoi deux paramettres.
    Et là j'ai des erreurs qui me disent : Demande non disponible dans ce contexte
    Dans la page d'action.

    En fin de message je mets mon code complet de la partie javascript.

    Dans le tuto j'ai vu qu'il fallait envoyer les paramettres avec un xhr.send("le nom du paramettre"+"la valeur du paramettre");

    Mais dés que je vais ça, y l'erreur qui vient.
    A l'autre bout, je tente de récupérer simplement le contenur avec un Request.QueryString("le nom du parametre") et de la concaténer à une chaine de caractére (c'est pour les tests, aprés je ferais un traitement un peu plus lourd avec enregistrement dans la base de données).

    Pourriez vous m'aider à comprendre pourquoi je n'arrive pas à récupérer les choses à l'autre bout ?

    Mon 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     <script type='text/JavaScript'>
            var passage = 0;
            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
            }
            /**
            * Méthode qui sera appelée sur le click du bouton
            */
            function go() {
                if (passage == 1) {
                    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) {
                            //alert(xhr.responseText);
                        }
                    }
                    xhr.open("GET", "/frame.aspx", true);
                    //xhr.send(null);
                    xhr.send("pubid=" + "48");
                    xhr.send("userid="+"e9cc08ef-6422-4815-92bb-925a5b145db5");
                }
                passage++;
            }
    		</script>

  2. #2
    Membre chevronné Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Par défaut
    Bonjour,
    Les paramètres sont a mettre dans le send si c'est une requête POST. Si c'est une requête GET, il faut les mettrent dans l'url.
    Édit : pour utiliser la méthode POST, il faut aussi rajouté cette ligne entre le open et le send :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    connection.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on précise que le contenu de la requête est bien de type post/formulaire...
    connection.send(params); // on envoie la requête

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Hello Nadox, merci pour ton aide.

    Bon, une fois tout remis en place, ça marche bien (mais je suis persuadé d'avoi essayé ça au début et ça n'a pas fonctionné, pas grave)

    Donc, ça donne ça pour l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    xhr.open("GET", "/frame.aspx?pubid=48userid=e9cc08ef-6422-4815-92bb-925a5b145db5", true);
    xhr.send(null);
    Alors question subsidiaire : le pubid et le userid sont dynamiques. Je les récupérer dans ma page de base (celle qui contient le code javascript) à partir de la base de donnée avec du code VB.NET. Ce sont des variables de type String que je peux manipuler un peu comme je veux.

    EDIT :
    merci pour la précision sur le POST, j'en ai pas besoins là, mais je garde pour plus tard.

    Autre point : en fait, mes deux paramettres je le reçois en QuesryString de la page, y a peut-être un moyen en javascript pour les récupérer ?
    Ce que je ne vois pas bien comment faire, c'est les envoyer dans la chaine qui sert à trouver la page dans le Script.
    Aurais tu un conseil à me donner ?

  4. #4
    Membre chevronné Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Par défaut
    Il faut un & entre les paramètres :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xhr.open("GET", "/frame.aspx?pubid=48&userid=e9cc08ef-6422-4815-92bb-925a5b145db5", true);
    xhr.send(null);
    Sinon tu n'en recevra qu'un avec tout ce qui suit le =

    Je n'ai pas bien compris ta dernière question.
    Pour récupérer les paramètres en javascript il y a
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    document.location.search
    qui renvoie la querystring.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 106
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("GET", "emp_maj.php?type=ajouter&idemp="+idemp+"&nom="+nom+"&prenom="+prenom+"&sexe="+sexe+"&typeT="+typeT+"&dateE="+dateE+"&equipe="+equipe, true);

  6. #6
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci Nadox pour cette petite correction (que j'avais vu un peu avant, mais c'est sympa)

    Revenons sur la récupération des paramettres en querystring. Je vais tenter une explicaiton plus claire :
    - ma page de base qui affiche mon Iframe (c'est toujours le mêm sujet que l'autre topic) est appellée avec des paramettres en quesrystring tel que ça : http://www.ozouf.maison/wwwBomba/Aff...e.aspx?pubid=4
    - dans cette page j'ai mon code javascript qui va faire l'appel xmlHttpRequest et donc envoyer des paramettre en querystring à la page frame.aspx
    - vu que se sont les mêmes paramettres, je cherche le moyen de les récupérer direct et de les remettre dedans.

    Pour l'instant j'ai fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    qs = document.location.search
                    var pubid = qs.get('pubid');
                    var userid = qs.get('userid');
                    
                    xhr.open("GET", "/frame.aspx?pubid="+pubid+"&userid="+userid, true);
                    xhr.send(null);
    Mais il me dit
    Détails de l’erreur de la page Web

    Message*: Cet objet ne gère pas cette propriété ou cette méthode
    Ligne*: 41
    Caractère*: 17
    Code*: 0
    URI*: http://www.ozouf.maison/wwwBomba/Aff...e.aspx?pubid=4
    et la ligne 41 c'est celle que j'ai mis en rouge.
    Donc, je dois oublier un truc, mais lequel ?

  7. #7
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    heu, je crois que j'ai compris ! document.location.search renvoi toute la chaine de quesrystring en fait, donc je peux la reprendre tel que.

    ça donne ça dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    xhr.open("GET", "/frame.aspx"+document.location.search, true);
                    xhr.send(null);
    J'ai bon là ?

  8. #8
    Membre chevronné Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Par défaut
    Oui, ça devrait être ça, même si il faut peut-être vérifier avec des tests sur les différents navigateur (je ne suis pas sur à 100% que le contenu de location.search soit uniforme).

  9. #9
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour tout Nadox.

    IE, FF et Chrome fonctionne bien, alors ça va.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/10/2008, 16h29
  2. [AJAX] Modifier les header (PHP) avec une requête XMLHttpRequest?
    Par Prosis dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 09/09/2008, 00h34
  3. Réponses: 1
    Dernier message: 21/03/2006, 14h29
  4. Récupération des paramètres d'une requête
    Par TomPad dans le forum Access
    Réponses: 10
    Dernier message: 16/06/2005, 15h11
  5. Récupération des paramètres avec une procedure stockée
    Par samlerouge dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/03/2004, 22h00

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