Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/02/2012, 23h41   #1
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Par défaut Faire passer une variable dans load() suite à un on()

Bonsoir,

Je me concocte un petit plugin

J'ai une fonction recupValeurSelect() avec un événement $(this).on('change', ... qui renvoie une valeur.
Quand je fais un alert la fonction renvoie bien les valeurs mais elles ne passent pas dans le val du load().
Comment faire passer val dans le load() ?

Code :
1
2
3
4
5
6
7
8
9
10
11
 
...
var opts = $.extend(defaults, options);
 
  if(recupValeurSelect()) { var val = recupValeurSelect(); } else { var val = ''; }
 
	$(this).load(opts.linkInclude + ' #' + opts.nomTable, { 'str':val }, function(){
 
	creationTableau();
 
});
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 03h05   #2
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

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

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonsoir

Code :
if(recupValeurSelect()) { var val = recupValeurSelect(); } else { var val = ''; }
Rien ne vous choque ?

Vos deux déclarations "var" sont locales. La variable val dans la méthode "load" est donc "undefined".
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 13h17   #3
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Citation:
Envoyé par danielhagnoul Voir le message
Bonsoir

Code :
if(recupValeurSelect()) { var val = recupValeurSelect(); } else { var val = ''; }
Rien ne vous choque ?

Vos deux déclarations "var" sont locales. La variable val dans la méthode "load" est donc "undefined".
3h05 !

Oui effectivement, la variable est en locale

Quelque chose m'échappe, car même en globale rien ne passe dans la méthode load :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
var val = '';
 
if(recupValeurSelect()) { val = recupValeurSelect(); } else { val = ''; }
 
$(this).on('change', '#' + opts.nomTable, function() {
	val = recupValeurSelect();
	alert(val); // Renvoi bien les valeurs
});
 
	$(this).load(opts.linkInclude + ' #' + opts.nomTable, { 'str':val }, function(){
 
			initCreationTableau();
	});
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 21h40   #4
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

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

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonsoir

La variable "str" passe très bien au travers du petit test que je me suis amusé à faire, car il y avait tellement longtemps que je n'avais plus écrit du PHP, un langage que j'adore. (Ma conscience : "Menteur !" )

Le fichier qr6.php :

Code :
1
2
3
4
5
6
7
8
9
<?php
    header('Content-Type: text/html; charset=utf-8');
 
    if ( isset($_REQUEST['str']) && empty($_REQUEST['str']) == false ){
        echo '<p>'.$_REQUEST['str'].'</p>';
    } else {
		echo '<p>Erreur !</p>';
	}
?>
Mon test :

Code :
1
2
3
4
5
var val = "bonjour";
 
$( "section.conteneur" ).load( "qr6.php", { 'str': val }, function( data ){
	console.log( data );
});
Et tant dans la console que dans la page web, j'ai le résultat attendu : <p>bonjour</p>
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 19h14   #5
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Bonsoir

pour en finir avec cette discution, voici mon code fonctionnel avec la fonctionalité que je voulais :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
var $t = $(this); // Ce qui change tout :)
 
initTab(opts.v);
 
function initTab(val)
{
 
    $t.load(opts.linkInclude + ' #' + opts.nomTable, { 'str':val }, function(){
 
	initCreationTableau();
    });
 
}
 
$t.on('change', '#' + opts.nomTable, function() {
	initTab(recupValeurSelect());
});
Mon erreur venait du fait qu'il y avait confusion avec les $(this) à l'intérieur du plugin, entre ceux qui faisaient référence à l'élément appelé par le plugin et ceux des fonctions internes du plugin (je ne sais pas si je suis très clair ).
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h37.


 
 
 
 
Partenaires

Hébergement Web