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 07/12/2010, 01h39   #1
Membre du Club
 
Inscription : novembre 2010
Messages : 80
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 80
Points : 51
Points : 51
Par défaut Envoyer plusieurs variables en ajax

bonjoir,
Mon objectif est donc d'envoyer plusieurs variables à un script php, hors , pour l'instant , je n'arrive que à envoyer une seul variable à la fois.
Par ou commencer?
J'ai par exemple essayé d'envoyer un tableau , sans succès:

Code :
1
2
3
4
var transmettre["zetest"] ="truc2";
$.post("ajaxformulaire.php",
   { maj: transmettre //dans transmettre se trouve mon tableau }
);
Si vous pouviez , ne serais ce que me donner une piste par ou commencer , ca serait sympa de votre part.
vaneck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 08h40   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 001
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 001
Points : 45 077
Points : 45 077
ajax ne sait transmettre que du string...
si tu dois envoyer un tableau il faut le serializer sous forme de string

Code :
{ maj: {clef1:valeur1,clef2:valeur2 ...}}
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 10h14   #3
Membre confirmé
 
Inscription : avril 2006
Messages : 507
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 507
Points : 239
Points : 239
Bonjour,

Le second paramètre de la fonction $.post est un Objet...

Tu peux passer ton tableau dans la mesure ou c'est un Objet directement en paramètre :

Code :
$.post("monUrl.php", transmettre, function(data){alert(data)});
Dans le PHP tu récupère ton Objet sous la forme $_POST, pour tester tu mets dans ton php :

ton alert(data) te renverra bien le tableau passé en paramètre du $.post

Si tu utilises firebug je te conseille plutôt : console.log(data)
que : alert(data);

Bonne journée
Alexdezark est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 10h34   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 001
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 001
Points : 45 077
Points : 45 077
Attention à l'abus de langage
Citation:
Tu peux passer ton tableau dans la mesure ou c'est un Objet directement en paramètre :
Ajax ne sait faire transiter que du STRING...

"l'objet " ne transite pas, il est convertit en string à l'envoi puis reconverti en objet à l'arrivée ..
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 11h38   #5
Membre du Club
 
Inscription : novembre 2010
Messages : 80
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 80
Points : 51
Points : 51
Citation:
"l'objet " ne transite pas, il est convertit en string à l'envoi puis reconverti en objet à l'arrivée ..
dans ce cas la, dois je moi même le sérialisé? d'après ce que j'ai lu dans la doc jquery , ca a l'air de se faire automatiquement .
Autrement , ca risque de s'avérer complexe, puisque la doc jquery indique que serialize :
Citation:
Sérialise un conteneur d'éléments de type input en une chaine de caractères.;
hors, je n'ai dans mon objet/tableau que des chaines que j'aurais sélectionné précédemment (notamment dans des inputs):
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$("#submit").click(function(){
var transmettre = new Array(); 
$("input:text,textarea").each(function()
{
if ($(this).val() != $(this).attr("commentaire"))
{
transmettre[$(this).attr('name')]=$(this).val();  
}
else
{
transmettre[$(this).attr('name')]= '';  
}
})
$.post("ajaxformulaire.php",
   { maj: transmettre }
);
})
est ce que je peux faire avant de l'envoyer?:
transmettre= transmettre.serialize()
vaneck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 11h49   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 001
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 001
Points : 45 077
Points : 45 077
http://api.jquery.com/jQuery.post/

le second paramètre attendu par la fonction post de jquery est un objet
je dis juste que ajax (utilisé par la focntion jquery post) ne sait rien envoyer ni recevoir d'autre que du string
cote js c'est donc la fonction post qui s'occupe de convertir ton objet en un string qui sera évalué coté serveur
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 17h43   #7
Membre du Club
 
Inscription : novembre 2010
Messages : 80
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 80
Points : 51
Points : 51
Oki merci finalement à SpaceFrog et à Alexdezark , ca marche bien:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
function publier(){
$("#submit").click(function(){
var transmettre = new Object();
$("input:text,textarea").each(function(){
if ($(this).val()!= $(this).attr('commentaire'))
{
transmettre[$(this).attr('name')] = $(this).val();
}
else
{  
transmettre[$(this).attr('name')] = false; 
}  
});
$.post("ajaxformulaire.php",
 { objet: transmettre },
   function(data){alert(data)});
})}
vaneck 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 19h10.


 
 
 
 
Partenaires

Hébergement Web