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

jQuery Discussion :

Utilisation de getJson [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Graphic Programmer
    Inscrit en
    Mars 2006
    Messages
    1 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Graphic Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 631
    Par défaut Utilisation de getJson
    Bonjour à tous,

    je suis sur un problème depuis plusieurs jours et je bloque complétement dessus.

    J’essaie de traiter des donnée issu d'un tableau formaté en JSON.
    Quand je traite un fichier JSON (tableau.json) , ça marche
    et quand je charge cette fois si une url d'un fichier php qui me génère les même données que ce qu'il y a dans mon fichier json, ca marche plus.

    j'ai créé un tableau en JSON "tableau.json" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [[1287559800,1.37713,1.3773,1.37637,1.37656,346],[1287560700,1.37654,1.37702,1.37603,1.37673,422],[1287561600,1.37665,1.37806,1.37544,1.37772,647],[1287562500,1.37771,1.37901,1.37742,1.378,806],[1287563400,1.37797,1.38,1.37787,1.37963,862]]
    et quand je l'utilise dans ce fichier HTML, ça fonctionne :

    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
     
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title></title>
        <script type="text/javascript" src="jquery-1.7.2.js"></script>
        <script type="text/javascript">
            $(document).ready(
                    function()
                    {
                        $.getJSON('tableau.json', function(data)
                        {
                              Alert(Data);
                        });
                    });
        </script>
    </head>
    <body>
    </body>
    </html>
    Par contre si j'utilise cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $.getJSON('http://localhost/dbjson.php?start=1287559800&nbar=10&format=json&callback=?', function(data)
    en lieu et place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $.getJSON('tableau.json', function(data)
    Ca fonctionne plus. En debuggant le script j'ai vu que le alert(data) n’était jamais atteint.

    Et je comprends pas pourquoi. sachant que mon fichier json je l'ai enregistré en local via l'url que je veux utiliser.

    J'ai vu sur pas mal de site qu'il fallait utiliser le jsonp pour les requêtes cross site,et j'ai donc ajouté à l'url le " callback=?" comme demandé, mais ça marche pas plus.

    Merci de m'aider, parce que étant débutant j'arrive pas a comprendre pourquoi ca marche pas.
    D'ailleurs je comprend pas non plus pourquoi il faut utiliser jsonp plutot que json..

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2012
    Messages : 136
    Par défaut
    Bonjour,
    Si il y a beaucoup de données il faut faire un .
    Il faut une troisieme variable dans le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .get(fichier.json, donnée, success)
    non ?
    Je débute alors je suis peut etre a coté de la plaque

    puis faire une fonction qui traites tes donnée par exemple avec le EDIT : je viens de voir que tu voulais importer et pas exporter, je prefère le sql perso via ajax. En tout cas je fais comme ça.

  3. #3
    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 : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    @Schim59 : ne pas confondre .get() et .getJSON()...

    Sinon, ton fichier PHP ne produit probablement pas un fichier JSON valide.
    Ton PHP renvoit-il bien le bon header ? N'y a-t-il pas de caractères parasites (non affichables) qui invalident le résultat ?
    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

  4. #4
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2012
    Messages : 136
    Par défaut
    J'ai écrit les premières lignes de code hier (comme quoi je débute) et je ne manipule que des chiffres pour le moments et sans passer pas sql donc juste de l'ajax/php. Je ferai le test ce soir avec des caractères spéciaux et les tables sql, mais je ne vois pas pourquoi cela ne marcherait pas. C'est quoi un "header" ?

    En effet j'ai confondu get et getJSON. Désolé.

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Graphic Programmer
    Inscrit en
    Mars 2006
    Messages
    1 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Graphic Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 631
    Par défaut
    Merci pour vos réponses ça fait plaisir

    Citation Envoyé par Schim59 Voir le message
    EDIT : je viens de voir que tu voulais importer et pas exporter, je prefère le sql perso via ajax. En tout cas je fais comme ça.
    Comment ça le "sql via ajax", tu veux dire que tu met dans ton code javascript le login et le pass de ton serveur sql ?

    voila le code de mon fichier 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?php
        header("Content-type: application/json");
               
        // on recupere les paramètres passés dans l'URL
        $startDate = 0;
        $nBar = 0;
        if(isset($_GET["start"])) $startDate = $_GET["start"];
        if(isset($_GET["nbar"])) $nBar = $_GET["nbar"];
        
        // on se connecte à MySQL 
        $db = mysql_connect("localhost", "root", "");
            
        // on sélectionne la base
        mysql_select_db('test',$db); 
            
        // on recupere les $nBar lignes à partir de $startDate
        $sql = "SELECT v1,v2,v3,v4,v5,v6 FROM table1 WHERE v1 >= ".$startDate." LIMIT ".$nBar;
        $res = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
        
        // on fait une boucle qui va faire un tour pour chaque enregistrement
        echo "[";
        $index = 0;
        while($data = mysql_fetch_assoc($res))
        {
            // on affiche les informations de l'enregistrement en cours
            if ( $index > 0 ) echo ",";
            $str = array((int)$data['v1'],(double)$data['v2'],(double)$data['v3'],(double)$data['v4'],(double)$data['v5'],(int)$data['v6']);
            echo json_encode($str);
            $index++;
        }
        echo "]";
     
        mysql_close($db);
    ?>
    J'ai regardé ce que me sortait firebug, et ça à l'air OK :

    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
     
     
    Parametres :
    _	1342464201064
    callback	jQuery172020141200174312845_1342464201051
    format	json
    nbar	10
    start	1287559800
     
    En-têtes :
    Réponsevoir le code source
    Connection	Keep-Alive
    Content-Length	485
    Content-Type	application/json
    Date	Mon, 16 Jul 2012 18:43:21 GMT
    Keep-Alive	timeout=5, max=100
    Server	Apache/2.4.2 (Win64) PHP/5.4.3
    X-Powered-By	PHP/5.4.3
    Requêtevoir le code source
    Accept	*/*                           */
    Accept-Encoding	gzip, deflate
    Accept-Language	fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
    Connection	keep-alive
    Host	localhost
    User-Agent	Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1
     
    Réponse :
    [[1287559800,1.37713,1.3773,1.37637,1.37656,346],[1287560700,1.37654,1.37702,1.37603,1.37673,422],[1287561600,1.37665,1.37806,1.37544,1.37772,647],[1287562500,1.37771,1.37901,1.37742,1.378,806],[1287563400,1.37797,1.38,1.37787,1.37963,862],[1287564300,1.37962,1.37963,1.3779,1.37843,681],[1287565200,1.37844,1.37952,1.37766,1.37947,874],[1287566100,1.37949,1.37976,1.37897,1.37922,672],[1287567000,1.37923,1.38102,1.37825,1.38084,949],[1287567900,1.38085,1.382,1.3805,1.38116,806]]
     
    Cache :
    Data Size	485
    Device	disk
    Expires	Thu Jan 01 1970 01:00:00 GMT+0100
    Fetch Count	2
    Last Fetched	Mon Jul 16 2012 20:43:21 GMT+0200
    Last Modified	Mon Jul 16 2012 20:43:21 GMT+0200
    Le dernier je le met pas c'est l'arborescence du fichier json ^^

  6. #6
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2012
    Messages : 136
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function suivi(){
    	$.post("recuppoid.php", processResult);
    }
    function processResult(data, textStatus){
    	$(".ret2").html(data);
     
    };
    le code php est dans un fichier nommé "recuppoid.php" avec le SELECT qui va bien.
    Reste a déterminer l’évènement déclencheur du code. onclick // onkeyup // init() etc..

    J'ai manipulé aussi des dates ça marche bien. La c'est une partie d'un un mini programme qui prend en entrée le poids du jour et te rend un historique en sortie à la demande.

    les login sont dans le "recuppoid.php" (il est conseillé, je crois, de les mettre dans un 3ème fichier pour pas que ce soit dans le code directement).

    Bon courage.

    ps : après pour le json reste a changer .get ou .post en .getJSON c'est exactement la même chose sans le textStatus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function suivi(){
    	$.postJSON("recuppoid.json", processResult);
    }
    function processResult(data){
    	$(".ret2").html(data);
     
    };
    J'ai pas tester mais théoriquement, c'est ça.

    J'espère pas être trop hors sujet ^^.

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    Graphic Programmer
    Inscrit en
    Mars 2006
    Messages
    1 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Graphic Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 631
    Par défaut
    Oui sauf que postJSON, c'est pas une fonction JQuery

  8. #8
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2012
    Messages : 136
    Par défaut
    Citation Envoyé par cuicui78 Voir le message
    Oui sauf que postJSON, c'est pas une fonction JQuery
    Ah oui je me demande pourquoi.
    Tu a un message d'erreur ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $.getJSON('http://localhost/dbjson.php, function(data)
    pourquoi tu ajoute ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?start=1287559800&nbar=10&format=json&callback=?'

    tu passes par un programme php c'est ca ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de getjson
    Par dks17 dans le forum jQuery
    Réponses: 16
    Dernier message: 23/11/2013, 16h04
  2. Autocomplétion et utilisation de $getJson
    Par cisco1635 dans le forum jQuery
    Réponses: 0
    Dernier message: 27/05/2013, 13h13
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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