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

Bibliothèques & Frameworks Discussion :

Passage de tableaux à Ajax.Request


Sujet :

Bibliothèques & Frameworks

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 38
    Points
    38
    Par défaut Passage de tableaux à Ajax.Request
    Bonjour à tous,

    Dans un Ajax.Request j'aurai besoin de passer un tableau de tableaux associatifs en paramètre. Par exemple:

    Chaque élément du tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tab[0] = {id:"1",taille:"34", pos:"54"}
    tab[1] = {id:"2",taille:"46", pos:"32"}
    etc...
    le script php le récupérerait soit en get soir en post de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['tab'] = $tab, puis $tab[0] = $htable, $htable["id"], etc...
    Quelqu'un saurait-il comment passer ces variables à la requete de façon à les récupérer de manière plus ou moins similaire.

    Merci!

  2. #2
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Je ne sais pas si PHP a des librairies permettant de lire le JSON, mais s'il en a le plus simple est de serialiser en JSON ton tableau et d'envoyer cette chaine comme un parametre :
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 38
    Points
    38
    Par défaut
    Merci pour ton aide,

    C'est une idée en effet voila ce que j'ai essayé de faire mais ça ne fonctionne pas, il existe en effet la classe JSON Services en PHP pour récupérer ça mais comment le faire passer par post ou get?

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    function save_exercise() {
     
    	var i;
    	var obj = '{"elements": [';
    	var el = $$('.ex_object');
     
    	for(i=0;i<el.length;i++) {
    		str  = '{';
    		str += '"id":"'+ el[i].id +'",'; 
    		str += '"width":"' + el[i].offsetWidth + '",'; 
    		str += '"height":"' + el[i].offsetHeight+ '",';
    		str += '"left":"' + el[i].offsetLeft+ '",';
    		str += '"top":"' + el[i].offsetTop+ '"';
    		str += '}';
     
     
    		if(i != (el.length - 1)) {
        		str += ',';
    		}
     
    	obj += str;
     
    	}
     
     
    	obj += ']}';
     
    	json = obj.evalJSON();
     
    	new Ajax.Request('save_exercise.php', {
     
    			method: 'post',
    			parameters: {
    			json: json 
      			},
    			onSuccess: function(req) {
    			alert(req.responseText);	
    			}
    		});	
     
     
     
    }

  4. #4
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Je pense que ca vient du fait que tu construis une chaine JSON, mais que tu l'évalue donc tu obtiens un objet. Essay en passant directement ta chaine "obj" en paramètre "json". Ensuite tu n'as qu'à parser le parametre json qui vient du post...
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 38
    Points
    38
    Par défaut
    J'ai essayé cette solution en fait mais le problème est qu'il m'ajoute des slash dans la réponse lorsque je la récupère du côté php, probablement pour des raisons de sécurité! Ce qui fait que après je devrai enlever les slash de l'autre côté, je suis étonné qu'il n'existe pas de solution plus simple pour passer des tableaux en post.

  6. #6
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Citation Envoyé par Tavarez59 Voir le message
    je suis étonné qu'il n'existe pas de solution plus simple pour passer des tableaux en post.
    Ce que tu veux passer est un tableau d'objet ! C'est beaucoup plus compliqué !
    Citation Envoyé par Tavarez59 Voir le message
    le problème est qu'il m'ajoute des slash dans la réponse
    Dans la réponse ou dans le parametre json ? on peut voir ce qu'il envoie ? ce n'est pas tout simplement pour échaper les " et les ' ? La librairie côté serveur ne les traite pas ?
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    Effectivement, JSON est une très bonne solution. Prototype.js, entre autres, nous permet de sérialiser les objets en JSON de manière assez succinte. Avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var xyz = {pouet: function(){/*...*/}, id:"tagada"};
    var data = [{pain:"italien", poisson:"mérou", fruits: ["banane", "pomme", "framboise"]}, {monument:"Tour de Pise", volcan:"Vésuve", matériaux:["béton", "bois", "pierre"], référence: xyz}];
    // -> Object.toJSON(data)
    Ce qui nous produit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '[{"pain": "italien", "poisson": "mérou", "fruits": ["banane", "pomme", "framboise"]}, {"monument": "Tour de Pise", "volcan": "Vésuve", "matériaux": ["béton", "bois", "pierre"], "référence": {"id": "tagada"}}]'
    (Note: tu remarqueras que la fonction "pouet" de l'objet "xyz" a simplement été ignorée.)


    Du côté PHP tu as une extension pour le traitement du JSON. Elle n'est pas fantastique (dès lors que tu as des propriétés protégées / privées il a du mal à les encoder naturellement si mes souvenirs sont bons) mais elle te permettra ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?
    $data = JSON_decode($_POST['data']);
    ?>
    $data sera alors un POPO (Plain Old PHP Object - ahah ) contenant les données expédiées par le client.

    Tu peux bien sûr faire ça dans l'autre sens en utilisant JSON_encode($data) et si tu spécifies ton header convenablement ("application/json" par exemple) tu pourrais récupérer simplement ça de l'autre côté, comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var request = new Ajax.Request(path, {
        parameters: {/*...*/},
        onSuccess: function(response) {
            var data = response.responseJSON;
            // Là, si %data% n'est pas nul tout s'est bien passé et tu as un bel objet prêt à l'emploi !
        },
        onException: function(response, exception) {
            throw exception; // ou mieux si t'es inspiré ;)
        }
    });

Discussions similaires

  1. [Prototype] Passage de variable sur fonction new Ajax.Request
    Par Overstone dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 31/08/2007, 11h36
  2. Réponses: 7
    Dernier message: 07/01/2007, 13h50
  3. [AJAX] Ajax.Request et le caractère '+'
    Par jon301 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/11/2006, 21h34
  4. Passage de tableaux
    Par jeffS dans le forum MFC
    Réponses: 9
    Dernier message: 02/12/2004, 15h43

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