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 :

Passer plusieurs variables dans xhr.send (méthode POST)


Sujet :

AJAX

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut Passer plusieurs variables dans xhr.send (méthode POST)
    Bonjour,

    j'arrive à faire passer une variable dans requete.send (mon ajax fonctionne en POST après vérification).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete.send("titre=" + escape(oTitre));
    En revanche après de très nombreuses recherches et tests, je n'arrive pas à trouver le code pour passer plusieurs variables. Merci pour votre aide ?

    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
    function Search()
    		{
    			oTitre = document.getElementById('titre').value;
    			oEdition = document.getElementById('edition').value;
    			oResume = document.getElementById('resume').value; 
     
    			var requete = creerRequete();
    			var url = "ajaxphp_post.php";
     
    			requete.open("POST",url,true);
    			requete.onreadystatechange = function () {
    				afficherResultat(requete);
    			}
     
    			requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    			requete.send("titre=" + escape(oTitre) & "edition=" + escape(oEdition) & "resume="+ escapae(oResume));
    		}

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    essayez avec un tableau comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var donnees = {
        "titre" : oTitre,
        "edition" : oEdition,
        "resume" : oResume,
    };
     
    requete.send(donnees);

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    merci pour votre retour mais ça ne marche pas.

    je vous présente mes codes :

    Code html : 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
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     
    <head>
    	<title> PHP et Ajax</title>
    	<meta http-equiv="Content-type" content="text/html" />
    	<script language="javascript" src="requete.js"></script>
    	<script type="text/javascript" language="javascript">
     
                    function Search()
                    {
                            oTitre = document.getElementById('titre').value;
                            oEdition = document.getElementById('edition').value;
                            oResume = document.getElementById('resume').value; 
     
     
                            var requete = creerRequete();
                            var url = "ajaxphp_post.php";
     
                            // UTILISER POST
                            requete.open("POST",url,true);
                            requete.onreadystatechange = function () {
                                    afficherResultat(requete);
                            }
     
     
                            // setRequestHeader
                            requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     
                            //send
                            requete.send("titre=" + escape(oTitre)  && "edition=" + escape(oEdition)  && "resume="+ escape(oResume)); 
                            //tenter avec un seul &, +, .. je ne trouve rien sur les forums nb : seul la variables "resume est reconnu"
        
                    }
     
                    function afficherResultat(requete)
                    {
                            if(requete.readyState == 4 && requete.status == 200){
                                    oMondiv = document.getElementById("mondiv");
                                    oMondiv.innerHTML = requete.responseText;
     
                            }
                    }
     
    </script>
    </head>
    <body> 
    	<h2>Rechercher un livre</h2>
    	<div id="mondiv">
    		<form id="monform">
     
    <p>Titre du livre : <input id="titre" type="text" /></p>
    <p>Edition du livre : <input id="edition" type="text"/></p>
    <p>Resume du livre : <input id="resume" type="text" /></p>
    <p>Generation : <input id="generation" type="text"></p>
     
    <input id="controle" type="button" value="controle" onclick="Search()"></p>
     
    		</form>
    	</div> 		
     
    </body>
    </html>



    traitement php
    Code php : 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
    <?php
     
    $titre = $_POST['titre']; 
    $edition = $_POST['edition'];
    $resume = $_POST['resume'];
     
     $mysqli = new mysqli('localhost', 'root', '', 'test'); // création d'un OBJET nommée $mysqli
     
    if ($mysqli->connect_errno)
    { // Vérification de la connexion
        echo "Echec de la connexion: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
        exit(); // interruption de l'exécution
    } 
     
     // requete SQL
    $query = "SELECT * FROM livres1 WHERE titre = '$titre' AND edition = '$edition' AND resume = '$resume' ";
    $result = $mysqli->query($query);
     
    $retour = "";
     
    		if ($result->num_rows == 1)
    			{
    				echo ('CET ENREGISTREMENT EXISTE DEJA');
    			}
    		else 
    			{
    				echo ('ENREGISTREMENT REALISE');
    			}		
     
    //envoi au navigateur
    	echo $retour; 
     
    // libération 
    $result->free();
     
    // Fermeture de la connexion MySQL
    	@mysql_close($mysqli);
     
    ?>



    En me rendant dans le network :

    je suis bien en XHR, POST, 200 ....
    dans le Form Data il apparaît bien :
    resume : la valeur renseignée

    en revanche pour mes 2 premières variables (titre et edition), cela me dit :

    ( ! ) Notice: Undefined index: titre in C:\wamp64\www\test\5. AJAX ET PHP BDD DOUBLON SI NOM PRENOM DATE\ajaxphp_post.php on line 4
    Call Stack
    # Time Memory Function Location
    1 0.0007 243224 {main}( ) ...\ajaxphp_post.php:0

    ( ! ) Notice: Undefined index: edition in C:\wamp64\www\test\5. AJAX ET PHP BDD DOUBLON SI NOM PRENOM DATE\ajaxphp_post.php on line 5
    Call Stack
    # Time Memory Function Location
    1 0.0007 243224 {main}( ) ...\ajaxphp_post.php:0
    merci pour vos retours

  4. #4
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 740
    Points
    4 740
    Par défaut
    je vous présente mes codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	var requete = creerRequete();
    Ben déjà ça commence mal...
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    désolé je n'ai pas mis le fichier appelé


    requete.js
    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
     
     function creerRequete () {
     
    	var xhr = null;
     
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    	}
    	return xhr;
    }
    je sais que je n'ai pas suivi les noms habituels mais tout y est....


    habituellement (var xhr qui appelle la function getXHR dans oXHR.js) ...... dans mon cas j'ai "src="requete.js" dans laquelle il y a function creerRequete() qui est appelé par var requete....

    Mes différents tests avec une seule variable marchent très bien :
    le fichier html envoi bien la variable avec sa valeur
    le fichier post.php traite bien la requete et recoît bien les bonnes réponses (POST, 200, .....ok) - dans network je suis bien en XHR
    l'affichage est bon

    Mais avec plusieurs variables, je ne trouve pas le bon codage......

    merci

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete.send("titre=" + escape(oTitre) & "edition=" + escape(oEdition) & "resume="+ escapae(oResume));
    les "&" devrait être dans les guillemets, mais pas l'utiliser pour la concaténation. Et utilise encodeURI à la place d'escape
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete.send("titre=" + encodeURI(oTitre) + "&edition=" + encodeURI(oEdition) +"&resume="+ encodeURI(oResume));
    A+.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Tout marche très bien maintenant.

    je serai comment faire maintenant pour passer plusieurs variables.



    ENCORE UNE FOIS MERCI POUR VOTRE AIDE TRES PRECIEUSE.

    Bon WE et joyeuses Paques.

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

Discussions similaires

  1. [MySQL] Passer plusieurs variables dans un URL
    Par petit.quent dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/12/2011, 10h28
  2. Passer plusieurs variables dans paypal
    Par guigui48 dans le forum E-Commerce
    Réponses: 9
    Dernier message: 17/08/2011, 17h06
  3. [1.x] Passer une variable dans la méthode configure du formulaire
    Par Niki59 dans le forum Symfony
    Réponses: 2
    Dernier message: 29/04/2011, 16h35
  4. Passer plusieurs variables dans une fonction
    Par LM_programme dans le forum GTK+
    Réponses: 1
    Dernier message: 27/04/2010, 01h17
  5. [AJAX] passer un tableau dans xhr.send() ?
    Par beegees dans le forum AJAX
    Réponses: 10
    Dernier message: 23/03/2009, 14h39

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