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 :

[AJAX] Ajax et Json - création d'un .json par PHP


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 29
    Points : 16
    Points
    16
    Par défaut [AJAX] Ajax et Json - création d'un .json par PHP
    Hello,


    Le problème a plus l'air de se situer aux deuxième reply. Je le laisse pour ceux qui veulent savoir pourquoi je veux m'en servir.
    Après quelques heures d'arrachage de cheveux, je viens le partager ici.

    Je suis en train de réaliser une page en ajax, dans lequel il sera possible de faire un devis. Suivant les choix, les prix,délais, l'affichage du produit seront actualisés.

    Mon souci est le suivant : lors d'un évènement (un onblur ou onchange), plusieurs parties de ma page doivent s'actualiser.

    Au début je faisais ça de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input id="support" class="mesinputs" onblur="javascript:choixsupport(); calculprix(); affichSupport();"/>
    La première fonction enregistre le choix dans un objet PHP. La deuxième recalcule le prix et l'affiche. La dernière actualise le support. Ce qu'il n'allait pas c'est que le support s'affichait, alors que le choix n'était pas toujours modifié.

    Je me suis donc documenté un peu plus sur l'Ajax et j'ai trouvé sur developpez.com, un framework pour l'ajax. J'aimerais donc m'en servir, étant donné qu'on peut gérer mieux l'Ajax, dans mon cas surtout graçe à onSucces.

    J'essaye donc de gérer ça de la sorte.

    index.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input id="support" class="mesinputs" onblur="javascript:choixsupport(idElement);"/>
    choix.js
    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
     
    function choixSupport(idElement){
    //affichSupport();verifEmplacement(1,'.$this->id.');
     
          var idRecepteur = "btntransfert";
         //var idRecepteur = "visumarquage";
          var fichierPHP = "ajax/choixsupport.php"
     
          new Ajax.Updater(
     
                 idRecepteur,
    	fichierPHP,
    	{
    	       method: 'post',
    	       parameters : {support : $F("support"+idElement), idelement : idElement},
    	       onSuccess : function (json){
     
    	        alert(json.fonctions.choix);
    	        }
    	}
            );
     
     
    }
    choixsupport.php
    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
     
    <?php
     
    require "./php/class/devis.php";
     
    session_start();
     
    if(isset($_POST["support"]))            $support = $_POST["support"];
    if(isset($_POST["idelement"]))  $idelement = $_POST["idelement"];
     
    $_SESSION['mondevis']->tabElement[$idelement]->support = $support;
    $varDyn = $_SESSION['mondevis']->tabElement[$idelement]->couleur ;
     
    $jsonFormat = array(
                    'fonctions' => array(
                            'choix' => 'verifEmplacement('.$varDyn.')',
                            'choix' => 'affichSupport('.$idelement.')',
                            )
                            
                    );
    echo json_encode($jsonFormat);
    header("X-JSON : ".json_encode($jsonFormat));
     
     
    ?>
    Apparement le fichier JSON se crée bien, mais je n'arrive pas à l'exploiter du coté javascript.

    Est-ce que quelqu'un voit une erreur ? Ma méthode est elle bonne ou un peu tordu ?

    Merci pour vos réponse.

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    J'ai ré-essayé ce matin. Je n'arrive toujours pas à faire marcher tout ça.

    Je me demande si le JSON n'est pas mal foutu.

    J'ai essayé de plusieurs manière, aucune ne fonctionne :s.

    PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $jsonFormat = array(
    	"fonctions"=>array(
    		1=>"calculPrix()",
    		2=>"calculPrix1()",
    		3=>"calculPrix2()",
    		)
    	);
     
    $jsonFormat = json_encode($jsonFormat);
    echo $jsonFormat;
     
    // Renvoi : {"fonctions":{"1":"calculPrix()","2":"calculPrix1()","3":"calculPrix2()"}}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    $jsonFormat = array();
    $jsonFormat['fonctions'][] = 'calculPrix()';
    $jsonFormat['fonctions'][] = 'calculPrix1()';
    $jsonFormat['fonctions'][] = 'calculPrix2()';
     
    // Renvoi : {"fonctions":["calculPrix()","calculPrix1()","calculPrix2()"]}
    Quelqu'un saurait comment construire un tableau assiossatif JSON avec PHP s'il vous plait ?

  3. #3
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Common callbacks

    When used on individual instances, all callbacks (except onException) are invoked with two parameters: the XMLHttpRequest object and the result of evaluating the X-JSON response header, if any (can be null).
    Attention, le premier paramètre de onSuccess, c'est l'objet XmlHttpRequest. Ton JSOn est le deuxième paramètre.

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Bien vu ! C'est exactement ça mon problème.

    J'avais essayé avec 2 paramètre, mais cela ne marchait pas, et vu que qd je n'en mettais que un et que je le testais avec un alert, j'obtenais OBject[Object], je pensais que les deux n'étaient pas nécessaire.

    Le problème venait aussi de la création de mon json :
    j'écrivais :
    header('X-JSON :'.$json);
    au lieu de :
    header('X-JSON:'.$json);

    Le problème était un espace entre le X-JSON et le :.... !!

    Bon maintenant ça devrait aller beaucoup mieux.

    Merci DoubleU, tu m'as completement débloqué, parce que j'étais au point mort là et ça commencait à ne pas plaire à mon maitre de stage.

    Merci, merci et merci. (jsuis happy ^^)

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Coucou, c'est re-moi !

    En fait, j'ai été content pas si longtemps que ça. J'ai une dernière question. Je n'arrive pas à parser le JSON.

    En fait, j'arrive à récuperer les fonctions, mais sous forme de string. Du coup, je n'arrive pas à les exécuter. J'ai trouvé des parseur(s) sur json.org. Mais avec des explications en anglais qui ne m'ont pas trop parlé. J'ai essayé le code source et ce n'était pas mieux.

    Après, promis, jfinis tout seul !

  6. #6
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Désolé, je n'utilise jamais le json pour les échanges, je crainds de ne pouvoir t'être dans grand secours ici.

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Je vais en conclure que ce n'est pas possible. Finalement, j'ai finis par faire autrement et ça a l'air de bien marché.

    Néanmoins si quelqu'un sait comment faire, qu'il se manifeste, ça peut toujours être bon à savoir

Discussions similaires

  1. [2.x] Ajax : Retourner un render de template en json
    Par noname2 dans le forum Symfony
    Réponses: 4
    Dernier message: 13/10/2014, 09h43
  2. Création d'un json trop long
    Par Invité dans le forum C#
    Réponses: 2
    Dernier message: 25/08/2014, 10h43
  3. Erreur a la création d'un Json
    Par maxusn dans le forum Langage
    Réponses: 2
    Dernier message: 27/11/2012, 16h42
  4. [AJAX] json recuperer des donneés envoyé par php
    Par karimphp dans le forum AJAX
    Réponses: 1
    Dernier message: 14/05/2010, 11h13
  5. Création de fichier json avec PHP
    Par versus68 dans le forum Langage
    Réponses: 1
    Dernier message: 02/06/2008, 11h56

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