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

JavaScript Discussion :

array php dans fonction javascript?


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 7
    Points
    7
    Par défaut array php dans fonction javascript?
    Bonjour a tous,

    Je souhaite envoyer à une fonction javascript un array php qui contient des valeurs.

    En utilisant AJAX, j'aimerai que la fonction javascript envoie en get cet array a une page qui se charge dans un div.

    Je voudrais que le tableau, lorsque je le récupère en faisant un $tab=$_GET['tab']; soit toujours un tableau php.

    Je souhaiterais tout d'abord savoir si cela est possible.

    J'ai cru comprendre qu'on peut passer un array en get en utilisant la fonction serialize.

    Je suis loin d'être sûr qu'un tableau php puisse être passé en argument dans une fonction javascript. (quoique c'est bien possible avec les variables, donc peut être?)
    Si ce n'est pas possible, il doit bien exister un moyen de convertir un tableau php en tableau javascript, et ce nouveau tableau devrait pouvoir être passé en argument dans la fonction (je ne fais que des suppositions).
    Le tableau que je recupérerai sur la page en faisant $tab=unserialize($_GET['tab']); serait un array php?

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    JSON est fait pour cela: côté PHP utilise json_encode($v) pour envoyer à ton client et depuis ton client fournis du JSON que tu transformeras côté PHP en tableau avec json_decode($json, true).
    Soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //client -> server
    $tab=json_decode($_GET['tab'],true);
    //server -> client
    $json=json_encode($tab);
    echo ($json);
    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    sinon il doit y avoir un script de passage d'array de php à js et inversement dans les contribtions...

    join explode
    implode split

    pour un array simple
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    @SpaceFrog: c'est d'ailleurs tellement demandé qu'une recherche sur nos forums ramène un tas de posts auxquels... tu as déjà répondu ! Et toujours la même réponse !
    Citation Envoyé par SpaceFrog Voir le message
    implode coté php pour envoyer une chaine avec séparateur
    split en javascript pour générer un tableau à partir de la chaine ...
    ERE
    Quand une tête pense seule, elle devient folle.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Oui je suis assez constant
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    A tel point que c'est désormais dans la FAQ
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Mon tableau est de la forme suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => aaaaa[1] => bbbbb [2] => cccccc)
    La solution json me parraît sympathique.

    Je me demandais si j'avais besoin d'inclure un fichier dans le head, à la manière de jquerry. Je n'ai pas vu d'information en ce sens en me renseignant sur internet, mais je rencontre un petit probleme:

    J'ai un tableau php $tab qui s'affiche bien avec un print_r($tab); .

    Mon script marche correctement.

    Mais lorsque j'encode ce tableau en json, ( echo(json_encode($tab); ), une erreur survient, le chargement de la page est arrêté. C'est ce qui me fait penser que l'instruction json_encode n'est pas reconnue.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Autant pour moi, simple problème de parenthèse.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Mon array php est de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => aaaaa[1] => bbbbb [2] => cccccc)
    Apres encodage json, il est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ["aaaaaType","bbbbb", ccccc]
    Ce tableau json est contenu ds la variable $arrayjson:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $arrayjson=json_encode($tab);
    Je souhaite l'envoyer en argument dans ma fonction javascript loadparamind:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    loadparamind( <?php echo($arrayjson); ?>);
    Mais Firebug me renvoie une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error: syntax error
    Source File: http://localhost/index.php?page=testvisu
    Line: 9, Column: 56
    Source Code:
        loadparamind( [
    En fait, le echo n'affiche que le crochet ouvrant, après ca bloque.
    Pourtant, lorsque je fait un echo de $arrayjson en dehors de la fonction loadparamind, la totalié du tableau s'affiche.

    D'ou vient ce problème?

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    tu es coté serveur en php

    loadparamid est une focntion php ???
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Non, j'apelle loadparamind par un onclick, c'est une fonction javascript.

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    il faut passer l'objet à js ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $arrayjson=json_encode($tab);
    ?>
    var objJsonJS=<?php  echo $arrayjson; ?>
    loadparamind( objJsonJS);
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Le problème persiste.
    objJsonJS vaut [ J'ai l'impression que ce sont les guillemets à l'intérieur de $arrayjson qui entrent en conflit avec les guillemet de mon onclick.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <input type="button" value="OK" onclick="				
     
    var objJsonJS = <?php echo($arrayjson);?>;
     
    loadparamind(objJsonJS);
    "/>
    En effet, $arrayjson vaut: ["aaaaaType","bbbbb", "ccccc"]

    Comment faire pour remplacer les guillemets de $arrayjson par des '?

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Un petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $arrayjson = str_replace('"','\'',$arrayjson);
    fait l'affaire.

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    oui ou plus simpelement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <input type="button" value="OK" onclick='				
     
    var objJsonJS = <?php echo($arrayjson);?>;
     
    loadparamind(objJsonJS);
    '/>
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    L'objet json est bien transmis a la nouvelle page.
    Par contre, sur cette nouvelle page, lorsque je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $arrayparam=json_decode($_GET['objJsonJS'],true);
    	print_r($arrayparam);
    Je récupère le résultat de la forme suivante:
    Alors que je pensais que ca renvoyait un array php, donc quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => aaaaa [1] => bbbbb )
    C'est normal?

    En fait, si je fait un alert(objJsonJS) dans la fonction loadparamind, je remarque qu'une fois dans la fonction, objJsonjs ne vaut plus ['aaaa','bbbbb'], mais aaaaa,bbbbb.

  17. #17
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Euh... une question bête, mais vu que ton tableau est un tableau indexé, pourquoi tu ne passes pas par l'exemple de la FAQ qui est plus simple à mettre en oeuvre ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  18. #18
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,
    Citation Envoyé par vidzo Voir le message
    L'objet json est bien transmis a la nouvelle page.
    Par contre, sur cette nouvelle page, lorsque je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $arrayparam=json_decode($_GET['objJsonJS'],true);
    	print_r($arrayparam);
    Je récupère le résultat de la forme suivante:
    Alors que je pensais que ca renvoyait un array php, donc quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => aaaaa [1] => bbbbb )
    C'est normal?

    En fait, si je fait un alert(objJsonJS) dans la fonction loadparamind, je remarque qu'une fois dans la fonction, objJsonjs ne vaut plus ['aaaa','bbbbb'], mais aaaaa,bbbbb.
    N'oublie pas que JSON est en fait une chaine de caractères. Donc si tu postes directement ta variable objJsonJS cela ne peut fonctionner. Il te faut sérialiser d'abord ta variable JS array en JSON (donc faire exactement ce que tu as fait depuis PHP, mais à partir de JS).
    Pour sérialiser depuis JS: http://www.json.org/js.html

    ERE
    Quand une tête pense seule, elle devient folle.

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Bon, on m'a rappelé que mon application web sera hébergée sur un serveur php4, et apparement Json n'est pas bien pris en compte dans cette version, il faut utiliser des astuces.

    Je vais donc m'essayer à la version implode split, join explode.

    Dans mon onclick, je suit le FAQ à la lettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo "var objJsonJS = '".implode("<>", $arrayparam)."'.split('<>');"; ?>
    Pour récupérer le tableau sur la page appelée, je rencontre le même problème qu'en Json: C'est une chaine de caractère qui m'est renvoyée, du type aaaa,bbbb

    Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $arrayparam=$_GET['arrayparam'];
    $arrayparam = explode("<>", $arrayparam).join('<>');
    Mais ma syntaxe est incorrecte.

    Dois je dans ce cas aussi faire un unserialize?

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    résolu

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Passage d'un String PHP dans fonction javascript et quotes
    Par roukgreg dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/05/2013, 14h48
  2. php dans fonction javascript
    Par gunsailor dans le forum Langage
    Réponses: 9
    Dernier message: 07/09/2010, 11h21
  3. Insertion variable PHP dans fonction javascript
    Par hisin dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 01/06/2010, 16h58
  4. Utiliser le résultat d'un fichier php dans fonction javascript
    Par theshark85 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/07/2009, 12h07
  5. Appel fonction php dans code javascript
    Par licorne dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/03/2008, 10h55

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