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 :

réponse json mal formée ?


Sujet :

jQuery

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Par défaut réponse json mal formée ?
    Bonjour à tous,

    Je cherche à transmettre un array associatif multi-dimensionnel PHP à javascript via une requête $.ajax.

    voici l'en tête et le code coté 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
    header('Content-Type: text/json; charset=ISO-8859-1');
     
    //  ICI IL Y A DU CODE
    //  QUI DEFINIT 
    //  Array $tabFinal ETC...
     
    $tabRetour=array();
    $tabValeur=array();
    $tabRetour["total"]=$sansRemise;	// le total des produits avant remise
     
    foreach($tabFinal as $key=>$value){
    foreach($value as $element) $tabValeur['_'.$key]+=$element;
    }
     
    $tabRetour["valeur"]=$tabValeur;
     
    echo json_encode($tabRetour);
    Coté Javascript j'ai ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $.ajax({
       type: "POST",
       url: "Ajax/produits/verifDate.php",
       data: Obj,
       dataType:"json",
       error:function(msg){
         alert( "Error 1 : " + msg );
       },
       success:function(jsonResp){
    for(i in jsonResp){alert(i)};
    }
    });
    Quand je suis l'évolution de mes requêtes dans Firebug j'ai bien une réponse de ma page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array{"total":125,"valeur":{"_0":106.25,"_4":102.5}}
    et c'est pourtant le "error" qui est déclenché...

    Dans la doc relative au type de données de $.ajax il est précisé :

    "json": Evaluates the response as JSON and returns a JavaScript object. In jQuery 1.4 the JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown.
    J'en déduit que mon json est malformé

    Pouvez vous m'éclairer là dessus ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Par défaut
    J'ai fait un petit test en plus avec ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       error:function(xhr, ajaxOptions, thrownError){
         alert( "Error : " + xhr+" | "+ajaxOptions+" | "+thrownError );
       },
    et j'ai le alert suivant :

    Error : [object XMLHttpRequest] | parsererror | Invalid JSON: Array{"total":125,"valeur":{"_0":106.25}}
    Donc c'est bien mon passage du json qui est en cause.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 205
    Par défaut Effectivement le json
    est mal formé et cela depuis la version 1.4 de jquery. Celle ci ne supporte que du json 'strict', alors qu'avant jquery supporté du json notation javascript.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // n'est plus valable
    {"total":125,"valeur":{"_0":106.25}}
     
    // le format valide est
    {"total":"125","valeur":{"_0":"106.25"}}
    Là cela devrait fonctionner.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Par défaut
    J'ai toujours la même erreur

    Error : [object XMLHttpRequest] | parsererror | Invalid JSON: Array{"total":"125","valeur":{"_0":"106.25"}}
    Est-ce bien normal que Array soit indiqué dans l'erreur ?

    L'accolade ouvrante n'est-elle pas utilisée par les object ?

    et [] par les tableaux ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Par défaut
    Bon... le problème est identifié

    J'avais un echo $_POST[...] plus haut dans mon code... invisible sur ce que je montrais évidement...

    Alors forcement...

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

Discussions similaires

  1. Réponse JSON mal interprétée
    Par danamaro dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/06/2015, 13h53
  2. JSON mal formé
    Par natoine dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 29/03/2011, 08h28
  3. Correction d'un fichier xml mal formé
    Par devlo dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 25/10/2006, 11h30
  4. [SQL] Requete SQL mal formée : mais je vois pas pourquoi !
    Par Thomus38 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/06/2006, 18h03
  5. [xml] fichier mal formé
    Par kikimnet dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 25/11/2005, 09h30

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