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

jQuery Discussion :

passer un paramètre à un script PHP via jQuery


Sujet :

jQuery

  1. #1
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut passer un paramètre à un script PHP via jQuery
    Bonsoir,

    Je veux passer un paramètre a un script PHP via jQuery et je bloque. J'ai le script suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $(document).ready(function() {
    	$('.maClasse').click(function() {
    		$.get('monScrip.php', {'p': $(this).text()}, function(data) {
    			alert(data);
    		});
    		return false;
    	});
    });
    Le lien qui active ce script est le suivant:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div class="maClasse">
    <a href="monScript.php?param=valeur">Label Affiché sur le browser</a>
    </div>

    Le script PHP ne fait qu'afficher la valeur du paramètre passé en paramètre (il affiche 'valeur'). Vu le script jQuery on s'attend que le alert(data) affiche le paramètre 'valeur'. Or celui ci n'affiche pas la 'valeur' mais le Label Affiché sur le browser. C'est a dire la valeur de la balise ancre "<a href...>xxx</a>". Ce n'est pas ce qui m'intéresse: je veux la valeur du paramètre passé au script PHP: valeur. Comment faire ?

    Merci.

  2. #2
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut
    Vous avez surement corrigé de vous-même mais dans le script jQuery le 'p' dans {'p': $(this).text()} doit être "param" (cd. le lien web), sinon, ca ne fonctionne pas. Merci.

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Il faut récupérer le contenu de l'attribut "href". Il s'agit d'une URL, on utilise un plugin jQuery pour le "parser" et récupérer la partie "query" (voir la documentation du plugin). Exemple :

    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
    $( ".maClasse" ).on( "click", function(){
    	var url = $.url( $( this ).children( "a" ).eq( 0 ).attr( "href" ) ),
    		jqXHR = $.get( "monScrip.php", url.attr( "query" ) );
     
    	// debug console, touche F12
    	// plugin purl : https://github.com/allmarkedup/purl
    	// "http://cdnjs.cloudflare.com/ajax/libs/jquery-url-parser/2.2.1/purl.min.js"
    	console.log( url, url.attr( "query" ) );
     
    	jqXHR.done( function( data, textStatus, jqXHR ){
    		// succès de la transaction, on doit traiter le contenu de data
    		console.log( data, textStatus, jqXHR );
     
    	});
     
    	jqXHR.fail( function( jqXHR, textStatus, errorThrown ){
    		// échec de la transaction, gérer la catastrophe
    		console.log( jqXHR, textStatus, errorThrown );
     
    	});
     
    	jqXHR.always( function( jqXHR, textStatus ){
    		// la transaction est terminée
    		console.log( jqXHR, textStatus );
    	});
     
    	return false;
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut
    Bonsoir,

    Merci, mais dans l'idéal, je ne souhaite pas du tout utiliser de plugin. Juste jQuery.

    Votre solution me parait bien compliqué. D'autant que j'ai le livre "jQuery" et j'ai suivi leur instructions. Je vais relire.

    Sans vouloir être désagréable, votre soluce me semble bien compliqué pour juste un résultat basic. Si quelqu'un a plus simple avec juste jQuery (sans plug-in additionnel) je suis preneur.

  5. #5
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut
    Daniel,

    Je viens de lire votre "CV", et je doute qu'il y a quelque chose de plus simple, compte tenu de votre maitrise du jQuery.

    Je vais me rabattre sur des fichier JSON pour transférer mes données. Ca sera plus simple.

    Encore merci.

  6. #6
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut
    Au sujet des fichiers JSON je suis confronté au problème suivant.

    J'ai une fonction jQuery qui charge un fichier JSON et qui le met dans un élément HTML (un div class="maClasse"> data json <div>) avec la fonction suivante:

    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
    $(document).ready(function() {
    	$('.maClasse').click(function() {
    		$.getJSON('fichier.json', function(data) {
    			$('#dictionary').empty();
    			$.each(data, function(entryIndex, entry) {
    				var html = '<div class="entry">';
    				html += '<h3 class="term">' + entry['term'] + '</h3>';
    				html += '<div class="part">' + entry['part'] + '</div>';
    				html += '<div class="definition">';
    				html += entry['definition'];
    				html += '<br>';
    				html += entry['quote'];
    				html += '</div>';
    				html += '</div>';
    				$('#dictionary').append(html);
    			});
    		});
    		return false;
    	});
    });
    En réalité je charge puiseurs fichiers JSON et donc je suis tenté de factoriser le code de la fonction dans une fonction auxiliaire avec comme paramètre le nom du fichier JSON a charger.

    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
     
    function chargeJSON(argFichier) {
    	$.getJSON('argFichier', function(data) {
    		$('#dictionary').empty();
    		$.each(data, function(entryIndex, entry) {
    			var html = '<div class="entry">';
    			html += '<h3 class="term">' + entry['term'] + '</h3>';
    			html += '<div class="part">' + entry['part'] + '</div>';
    			html += '<div class="definition">';
    			html += entry['definition'];
    			html += '<br>';
    			html += entry['quote'];
    			html += '</div>';
    			html += '</div>';
    			$('#dictionary').append(html);
    		});
    	});
    	return false;
    }

    Et j'appelle la fonction comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $(document).ready(function() {
    	$('.letter-c').click(function() {
    		chargeJSON('test3.json');
    	});
    });
    J'appelle cette fonctionne plusieurs fois (d'où la nécessité de factoriser la partie chargeJSON).

    Mais sa ne fonctionne pas. Cela semble s'afficher une premier fois mais ca s'efface juste après. Et le résultat est diffèrent selon les navigateurs (IE, FF, ...)

    Une idée ?

  7. #7
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut
    Sur Firefox, le résultat attendu s'affiche une fraction de seconde puis disparait. Sous Internet Explorer une fenêtre Windows de l'explorateur de ficher s'ouvre. Curieux.

  8. #8
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut
    Aprés vérification, sous IE ca fonctionne mais il faut activer le JavaScript (au détail prés que ca ouvre, en plus, une fenêtre explorateur Windows). En revanche sous FF, là ca bloque toujours: ca s'affiche une fraction de seconde puis ca disparait.

  9. #9
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut
    Je m'en suis sorti finanlemnt en abandonant vorte idée, Danaiel.

    J'ai utilisé la fonction $.ajax et cela fonction bien.

    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
     
     
    $.ajax({
    	url: "script.php",
    	data: {	p : arg },
    	statusCode: {
    		404: function() {
    			alert("page not found");
    		}
    	},
    	success: function( data ) {
    		// alert('testAJAX dans data success');
    		$( ".snmpc-content" ).empty();
    		$( ".snmpc-content" ).html( data);
    	}
    }).done(function() {
    		// alert('testAJAX DONE');
    		$(this).addClass("done");
    	});

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

Discussions similaires

  1. [PHP 5.2] Passer une référence d'une archive zip à un script php via exec
    Par foxpowa dans le forum Langage
    Réponses: 8
    Dernier message: 08/04/2011, 15h29
  2. Réponses: 2
    Dernier message: 18/10/2008, 14h42
  3. Passer un paramètre à une page php
    Par inf007 dans le forum Dynamique
    Réponses: 1
    Dernier message: 23/08/2007, 12h27
  4. Réponses: 8
    Dernier message: 08/06/2007, 21h39
  5. Lancement script php via ssh
    Par furtif1 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 25/04/2007, 16h03

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