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 :

Tableau Json depuis Ajax


Sujet :

JavaScript

  1. #1
    Invit�
    Invit�(e)
    Par d�faut Tableau Json depuis Ajax
    Bonjour,

    Je poss�de un tableau Json � deux colonnes (x et y). A l'aide d'une m�thode Ajax je vais executer du code PHP. Je recup�re mes donn�es et avec un json_decode je recup�re mes valeurs.

    Ensuite deuxi�me cas, j'envoie mon tableau json sur la meme page mais les donn�es sont modifi�, je fais donc:
    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    $resultat = json_encode($tab);
    echo $resultat;

    Ensuite dans mon code js:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    tab = JSON.parse(resultat);
    alert(tab[0].x);
    Et j'ai l'erreur
    "unexcepted token"..


    Un alert(resultat) donne bien : [{"x":"50","y":"50"},{"x":"125","y":"50"}]Pouvez vous m'aider ?

    Merci
    Derni�re modification par Bovino ; 14/02/2013 � 21h37. Motif: Merci d'indiquer le langage utilis� ([code=xxx]) !

  2. #2
    Membre extr�mement actif
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Ao�t 2007
    Messages
    1 387
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Full-stack Web Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 1 387
    Billets dans le blog
    1
    Par d�faut
    Bonjour,

    Si je fait le test suivant dans mon navigateur �a marche bien :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    var resultat = '[{"x":"50","y":"50"},{"x":"125","y":"50"}]';
    var tab = JSON.parse(resultat);
    alert(tab[0].x);
    �a me donne bien 50. Il faut bien mettre le json entre quote par contre.
    Consultant et d�veloppeur full-stack sp�cialiste du Web
    faq jQuery - r�gles du forum - faqs web

  3. #3
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    $resultat = json_encode($tab);
    echo utf8_encode($resultat);

  4. #4
    Invit�
    Invit�(e)
    Par d�faut
    Pourtant apr�s plusieurs test j'ai toujours la m�me erreur

    Voici mon code Js appel� avec un bouton onClick="load(1)":
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function load(id_terrain){
    	$.ajax({
    		type: "POST",
    		url: "script/terrain_script.php",
    		data: {action : 'select', id : id_terrain}, 
    		cache: false,
     
    		success: function(resultat){
    			terrain = JSON.parse(resultat);
    			alert(terrain[0].x);
    		}
    	});
    }
    et mon code PHP:
    Code php : 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
    else if($_POST['action'] == 'select'){
    	if(isset($_POST['id']) and is_numeric($_POST['id'])){
    		$id = $_POST['id'];
     
    		$qry = mysql_query("SELECT x_terrain_detail, y_terrain_detail, rang_terrain_detail
    	                   FROM terrain_detail WHERE id_terrain = $id
    			   ORDER BY rang_terrain_detail") or die (mysql_error());
     
    		if(mysql_num_rows($qry) == 10){
    			$i = 0;
    			while($data = mysql_fetch_assoc($qry)){
    				$tab[$i]['x'] = $data['x_terrain_detail'];
    				$tab[$i]['y'] = $data['y_terrain_detail'];
    				$i++;
    			}
    			$resultat = json_encode($tab);
    		}
    	}
    }

    Merci

    Edit: sekaijin m�me probleme avec le utf8_encode, mes pages sont encod� en utf8
    Derni�re modification par Bovino ; 14/02/2013 � 21h35. Motif: Merci d'indiquer le langage utilis� ([code=xxx]) + r�duction d'indentation !

  5. #5
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    si tu utilise chrome ou un navigateur webkit

    ouvre les outils developpeur et s�lectionne l'onglet network
    lance ton appel ajax
    dans l'inspecteur tu doit voir passer ton appel
    en le s�lectionnat tu peux voir la r�ponse de ton serveur php
    Request MethodOST
    Status Code:200 OK
    et dans preview tu as le contenu
    c'est lui qui est charg� par ton javascript
    je te conseille aussi pour d�bogger
    de mettre dans ton code php
    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    $resultat = json_encode($tab);
    echo("/*");
    print_r($tab);
    echo("*/");

    ainsi tu peux voir si ta structure php correspond � ce que tu attends

    A+JYT

  6. #6
    Invit�
    Invit�(e)
    Par d�faut
    J'ai bien le statut 200 : OK

    et dans le preview:
    [{"x":"50","y":"50"},{"x":"125","y":"50"},{"x":"539","y":"36"},{"x":"558","y":"174"},{"x":"522","y":"290"},{"x":"300","y":"300"},{"x":"125","y":"300"},{"x":"50","y":"300"},{"x":"50","y":"125"},{"x":"50","y":"50"}]

    Je vois vraiment pas d'ou vient ce fichu probleme

  7. #7
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par d�faut
    C'est quoi l'erreur compl�te ? �a ne peut pas �tre que unexpected token ?

  8. #8
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    Visiblement �a ne vien pas du JSON qui semble conforme � ce que tu attends.

    je pencherais donc pour un probl�me PHP

    une recommandation de Zend pour les script php est de ne pas mettre le ?> final.
    la raison est simple, tout ce qui n'est pas entre <?php et ?> est envoy� au requ�teur.

    si ton script php fini par ?> enl�ve-le.
    si tu fais des includes fais de m�me sur tous les fichiers.

    il arrive tr�s souvent en php lorsqu'on mets le ?> qu'un caract�re invisible soit mis apr�s le tag de fermeture du script du coup on ne le voit pas et il est envoy� au client.
    avec le navigateur c'est rarement g�nant car le moteur HTML soit les ignore soit place le caract�re invisible dans la page, et l'interpr�te javascript consid�re la plus part de ces caract�res comme des witespaces. au pire il fait une erreur et continu.

    mais le Parser JSON est lui plus sensible � ce genre de pb.
    tu peux faire un test � la place de
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    terrain = JSON.parse(resultat);
    mets
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    eval ('terrain = ' + resultat + ';');
    si �a passe c'est que tu as de forte chance que ce soit un �l�ment cach� qui provoque l'erreur.

    enfin petite astuce dans ton php
    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    while($data = mysql_fetch_object($qry)){
      $tab[$i]['x'] = intval($data.x_terrain_detail); //tu peux aussi utiliser floatval
      $tab[$i]['y'] = intval($data.y_terrain_detail); //tu peux aussi utiliser floatval
      $i++;
    }
    en JSON �a va te donner [{"x":50,"y":50},{"x":125,"y":50}]. du coup dans terrain[0].x tu obtiens un Number.

    A+JYT

  9. #9
    Invit�
    Invit�(e)
    Par d�faut
    Effectivement avec un encodage utf-8 sans DOM tout est ok

    merci pour ton aide !

  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 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    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 659
    Billets dans le blog
    1
    Par d�faut
    sans BOM, pas DOM
    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 !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 1
    Dernier message: 10/01/2013, 09h39
  2. Requ�te Ajax Tableau Json
    Par sylvain230 dans le forum jQuery
    R�ponses: 12
    Dernier message: 19/07/2011, 14h23
  3. Conseil pour remplir un tableau excel depuis USF
    Par zouille dans le forum Macros et VBA Excel
    R�ponses: 2
    Dernier message: 28/10/2006, 11h15
  4. tableau word depuis delphi
    Par oliflo dans le forum Delphi
    R�ponses: 10
    Dernier message: 11/09/2006, 08h59
  5. Ecrire dans un tableau html depuis une fonction js ?
    Par botanica dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 05/10/2005, 12h48

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