2010-08-06 10 views
2

Je trouve cela plutôt étrange. cela fonctionne sur les anciennes versions de iQuery (c.-à-d. 1.2.x à 1.3). Cependant, je reçois un parserreur lors de l'utilisation de jQuery 1.4.xAjax JSON Parse Erreur

Toute aide sera appréciée. Je vous remercie.

Voici ce que je reçois de XMLHttpRequest.responseText

({count: 5, success: true, error: '', cache: false, data: [{column: ['Mike','Mike','Steve','Steve','Steve']}]}) 

Répondre

3

Jquery 1.4 mis à jour son analyseur de JSON, de sorte qu'il n'accepte plus JSON invalide qu'il a fait avant. Votre serveur génère un JSON invalide qui était précédemment toléré, mais qui ne l'est plus. Ce changement a été mentionné (brièvement) dans le release notes et documentation, et il y a eu beaucoup de discussionaboutit si vous google "jquery 1.4 JSON"

Mais pour résumer: les clés de JSON, pour être valable, doit avoir des citations autour d'eux, la chaîne ne peut pas être entouré par ces parenthèses, et rien ne peut utiliser des guillemets simples comme délimiteurs, de sorte que votre JSON devrait être:

{"count": 5, "success": true, "error": "", "cache": false, "data": [{"column": ["Mike","Mike","Steve","Steve","Steve"]}]} 

ou plus lisiblement:

{ 
    "count": 5, 
    "success": true, 
    "error": "", 
    "cache": false, 
    "data": [ 
     { 
      "column": [ 
       "Mike", 
       "Mike", 
       "Steve", 
       "Steve", 
       "Steve" 
      ] 
     } 
    ] 
} 

Les spécifications sont très joliment et clairement énoncées au http://www.json.org/ avec des images et des diagrammes. Vous pouvez également vérifier votre JSON au JSONLint - le JSON ci-dessus vérifie très bien, mais votre JSON original soulève toutes sortes d'erreurs. En ce qui concerne ce que vous devez faire: si vous avez la possibilité de changer ce que votre serveur envoie, faites-le - sortez-le en JSON valide. S'il vous plaît. Seulement si vous êtes impossible pour changer le comportement du serveur, vous devrez utiliser une solution de contournement de l'un des messages liés ci-dessus, ou utiliser une autre bibliothèque JSON.

Principe général: dans tous les cas, le faire correctement ™ est préférable - réparer la sortie du serveur (même si cela génère un bogue sur un serveur/API externe) est la solution à long terme, mais peut ne pas l'être pratique. Des solutions de contournement hackish sont parfois nécessaires, mais pas optimales.

+0

Merci beaucoup. Ça a marché comme sur des roulettes. très apprécié! – Henry