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] Post variable avec un onclick ?


Sujet :

AJAX

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 120
    Par défaut [AJAX] Post variable avec un onclick ?
    Bonjour,

    J'ai une question très simple pour les spécialistes ajax (en ce qui me concerne, mon niveau est en dessous de zéro) :

    En gros, je voudrais faire un post dans un onclick de la page (RForm.php) et récupérer sa valeur dans une deuxième (PForm.php). Je dois passer impérativement par le lien <a class="post" onclick="return confirmSubmit(' que vous trouverez dans le code ci-dessous. Ces deux pages sont en php, et je vous en ai fait des versions light pour que l'on puisse se concentrer sur le cœur du problème que je rencontre.

    Si vous récupérez ce code, et que vous le testez vous constaterez que tout fonctionne jusqu'au premier message (Hello 1), et après pour moi c'est très nébuleux ... je ne récupère aucune information pour $variable dans la deuxième page.

    Merci par avance à ceux qui accepteront de m'aider sur ce sujet, de me donner des pistes ... voir la solution !

    Cela donne ces deux pages :

    Code RForm.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
    40
    41
    42
    43
    44
    45
    46
    <!DOCTYPE html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="jquery-1.8.2.min.js"></script>
     
    <SCRIPT language="Javascript" type="text/javascript">
    	function confirmSubmit(msg)
    	{
    		var agree=confirm(msg);
    		if (agree)
    		{
    			alert('Hello 1');
    			$(".post").on("click", function(){
     
    				$.ajax({
    					url:"Pform.php",
    					type: "POST",
    					data: {name: "Pascal", location: "Lune" },
    					success:function(response){
    						return true;
    					},
    					error: function(){ // do an other action 
    					}
    				});
    			});
     
    			return true; // Sera a enlever une fois que l'on sera sûr que le précédent return true fonctionne dans la fonction ajax
     
    		}
    		else
    			return false;					
    	}
    </SCRIPT>
    </head>
    <body>
     
    <form name="ret"  method="post"  action="PForm.php">
     
    	<a class="post" onclick="return confirmSubmit('Voulez vous vraiment SUPPRIMER cet adhérent ?')">
    		<input type="image" name="supprimer" title="supprimer" onmouseover="this.src='images/bt_sup2.gif', tooltip.show(this)" onmouseout="this.src='images/bt_sup1.gif', tooltip.hide(this)" src="images/bt_sup1.gif" >	
    	</a>
     
    </form>
     
    </body>
    </html>

    Code PForm.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>Gestion variables passées d'une page à l'autre sur du href avec ajax<br>
    <?php  
            $variable = $_GET['var'];
            echo "Variable : " . $variable;
    ?>
    </body>
    </html>
    Images attachées Images attachées   

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 608
    Par défaut
    tu fais un appel AJAX avec "type: "POST".
    donc dans PForm.php, tu récupères tes données dans le tableau $_POST et pas dans $_GET

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 120
    Par défaut
    Effectivement, je me suis laissé emporté par leur discussion où à la fin il conseille d'utiliser un GET('var').

    J'ai changé le type dans RForm.php en GET, mais cela ne me retourne toujours rien ... alors que je devrais récupérer en théorie un << true >>.

    Après, est-ce que la syntaxe reste correcte en Ajax si on met ça ?

    Code RForm.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $(".get").on("click", function(){
     
    	$.ajax({
    		url:"Pform.php",
    		type: "GET",
    		data: {name: "Pascal", location: "Lune" },
    		success:function(response){
    			return true;
    		},
    		error: function(){ // do an other action 
    		}
    	});
    });
    Si je peux abuser ... est-ce que tu peux m'expliquer à quoi sert le data ?
    Je pense que je vais être obligé d'approfondir le sujet ... mais bon ne voulais juste que récupérer une valeur au départ, quitte à me mettre sur l'ajax plus tard car cela me semble pouvoir faire des choses que je n’imaginais pas jusqu'à présent.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    "data" sont les paramètres transmis lors de la requête, jQuery.ajax().

    Tu devrais pouvoir récupérer coté serrveur
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $nom = $_GET['name'];
    $adresse = $_GET['location'];

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 120
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Tu devrais pouvoir récupérer coté serveur
    Malheureusement, ce n'est pas le cas.
    Voilà ce que j'ai modifié en fonction de ce que vous m'avez indiqué :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>Gestion variables passées d'une page à l'autre sur du href avec ajax<br>
    <?php  
    	$nom = $_GET['name'];
    	$adresse = $_GET['location'];
        echo "Donnees : " . $nom . " de la " . $adresse;
    ?>
    </body>
    </html>

    Et en résultat, ces deux valeurs sont vides !

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 608
    Par défaut
    Citation Envoyé par B-Pascal Voir le message
    Et en résultat, ces deux valeurs sont vides !
    comment tu fais pour vérifier cela ? je demande ça parce qu'avec le code que tu nous as montré, tu n'affiche pas le résultat généré par PForm.php

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Je n'avais pas regardé le code en plein et c'était une erreur.

    Pour commencer un BUTTON de type IMAGE a le comportement d'un BUTTON type="submit" donc attention à ton return true, à ce sujet je ne vois pas l’intérêt de le placer dans un lien !

    Observe la chronologie des opérations et tu verras que tu n'appelles pas la fonction ajax la première fois, tu ne fais que la définir (et la rajouter) à chaque fois que tu cliques sur ton lien, au 2éme clic elle sera donc bien effective. Seulement voilà ton return true fait que ta page est soumise.

    Il te faut donc revoir la structure même de ton code.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 120
    Par défaut
    Citation Envoyé par mathieu Voir le message
    comment tu fais pour vérifier cela ? je demande ça parce qu'avec le code que tu nous as montré, tu n'affiche pas le résultat généré par PForm.php
    J'ai suivi les conseils de NoSmoking (sur le $_GET("name) et $_GET("location") qu'il affecte respectivement dans $name et $location) dans PForm.php.
    J'ai bien sur modifié, le POST en GET dans RForm.php (message juste avant celui de NoSmoking).

    Après s'il s'avère que si je dois bien récupérer ces valeurs comme il le dit, un simple affiche par echo devrait être suffisant ? L'echo est bien borné par les balises Php !
    Il m'affiche bien << Donnees : >> et << de la : >> mais rien entre et après ce texte.

    J'espère que je ne dis pas de bêtises ... parce que là j'aurais trop la honte !!!

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 120
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Je n'avais pas regardé le code en plein et c'était une erreur.

    Pour commencer un BUTTON de type IMAGE a le comportement d'un BUTTON type="submit" donc attention à ton return true, à ce sujet je ne vois pas l’intérêt de le placer dans un lien !

    Observe la chronologie des opérations et tu verras que tu n'appelles pas la fonction ajax la première fois, tu ne fais que la définir (et la rajouter) à chaque fois que tu cliques sur ton lien, au 2éme clic elle sera donc bien effective. Seulement voilà ton return true fait que ta page est soumise.

    Il te faut donc revoir la structure même de ton code.
    Bon, ben le problème était donc là ... ce que j'ai voulu faire, c'est enchainer sur une question à oui l'appel de la fonction ajax alors que je ne fais que la définir comme tu l'indiques.
    Merci d'avoir mis le doigt sur cette grosse erreur que je vais essayer de ne plus faire à l'avenir !

    Je revois tout ça et j'essaie de vous montrer une version << plus propre >>

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

Discussions similaires

  1. [Conception] Passage De Variable Avec Post Via Un Script Php + Redirection
    Par british_toons dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/09/2006, 16h57
  2. Passage de variable avec la méthode POST
    Par lama85 dans le forum Langage
    Réponses: 2
    Dernier message: 07/09/2006, 11h12
  3. Envoi de variables avec POST
    Par oops! dans le forum Flash
    Réponses: 5
    Dernier message: 06/08/2006, 21h14
  4. Réponses: 1
    Dernier message: 15/05/2006, 18h05
  5. un petit code tout simple o_O avec des $POST variable :)
    Par dark_vidor dans le forum Langage
    Réponses: 5
    Dernier message: 08/04/2006, 01h08

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