Question

Je fais une demande à une page JSON en utilisant la méthode de $.getJSON jQuery et du JSON retourné je crée du HTML et de le mettre à la page.

Les problèmes apparaissent quand j'ai un objet JSON imbriqué, je vais vous montrer un exemple plus tard.

Tout d'abord, si je fais une demande à ma page JSON et retourner le JSON suivant, la fonction fonctionne très bien et je vois un bel élément HTML apparaîtra sur la page:

JSON:

({
     "variants": [
         {
             "variantId": "536",
             "title": "Party Like a Rock Star for Two at the Metropolitan hotel, London ",
             "price": "£299.00"         
         }
     ]
})

Cela fonctionne bien, pas d'erreurs.

Cependant, dès que je reviens JSON ci-dessous, la fonction ne fonctionne pas.

({
     "variants": [
         {
             "variantId": "536",
             "title": "Party Like a Rock Star for Two at the Metropolitan hotel, London ",
             "price": "£299.00",
             "blogs": [
                 {
                     "title": "Another test",
                     "author": "Sean",
                 },
                 {
                     "title": "This is a test",
                     "author": "Sean",
                 }
             ]
         }
     ]
})

Comme vous pouvez le voir, il n'y a pas de caractères dans ce qui causeraient le casser aussi. J'ai aussi essayé de renommer les champs, par hasard que les « blogs », « titre » ou « auteur » sont des mots réservés JS (comme je pensais, pas de différence!)

Pour vous assurer que ce n'était pas ma façon de traiter les données qui ont été à l'origine d'un problème, je coincé une alerte ( « suis arrivé ici. »); comme le premier morceau de code (voir ci-dessous) dans ma fonction de .getJSON $, et cela ne je sais pas si le feu ce n'est pas ce que je fais avec les données qui provoque une erreur.

$.getJSON('/ajax/cover_flow_detail.ashx?experienceId=' + arguments[0], function(d) {
        alert('Got here'); // doesn't fire ?

        // omitted for brevity.

}

Même plus étrange - cela ne se passe dans IE6. IE7 et FF sont très bien.

Toute poussée dans la bonne direction serait apprécié, je suis complètement déconcerté!

Cheers, Sean

Était-ce utile?

La solution

Vous avez une erreur dans votre JSON - fuite des virgules dans certaines de vos définitions d'objets

.

(Cela vous suggère générez votre JSON en utilisant un modèle au lieu d'une bibliothèque JSON, c'est une erreur.)

IE est moins clément de cette erreur que les autres navigateurs.

Autres conseils

Internet Explorer est connu pour briser le fuite virgules .

var obj = {
     upper: 1,
     stage: 2,
};

échoue sur IE, tandis que d'autres navigateurs ignorent la virgule de fin après le second élément.

Ironie du sort, il faut erroring. IE a fait droit. Les navigateurs ne doivent pas parse vaguement JSON si la syntaxe est pas juste. Le, devrait être traité comme un; puis.

Je crois qu'il est l'analyseur, parce que dans EXT JS, il est strict.

Rappelez-vous quand les balises HTML qui ont été mal fermées seraient ignorées par IE, et non Netscape. Intéressant dans le tour autour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top