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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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
    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 confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 670
    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 éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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
    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
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    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...

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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
    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
    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+.

+ 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