2009-05-18 4 views
1

J'ai le code suivant dans ma page. Je m'attends à ce qu'une série d'objets json soit renvoyée depuis la page person_output.aspx, ce qu'elle fait avec succès. Cependant, quand il s'agit de sortir le contenu, je reçois une erreur.ne peut pas obtenir la sortie jquery mon objet json

$.getJSON("ajax/person_output.aspx", { 'uID': 1 }, function(data) { 
      $.each(data.items, function(i, item) { 
      $("<span/>").html(item.first_name).appendTo("#content"); 
       }); 
      }); 

ajax/person_output.aspx produit le JSON suivant (ce qui est seulement pour un enregistrement ..)

{ 
    "l_id": "49", 
    "u_id": "1", 
    "first_name": "john", 
    "last_name": "doe", 
    "title" : "General Manager", 
    "color" : "333" 
} 

Firebug produit l'erreur suivante;

G is undefined 
init()()jquery-1....2.min.js (line 12) 
(?)()()URLINX5 (line 99) 
I()jquery-1....2.min.js (line 19) 
F()()jquery-1....2.min.js (line 19) 
[Break on this error] (function(){var l=this,g,y=l.jQuery,p=l.....each(function(){o.dequeue(this,E)})}}); 
+0

L'erreur semble être avec la variable G. Est-ce défini n'importe où? – aleemb

+0

La variable "G" est le résultat de la compression de jquery. vous devriez essayer de l'exécuter avec une version de développement de jQuery et voir si la sortie a plus de sens dans ce cas. – fforw

Répondre

2

Il y a une virgule après la propriété color dans votre résultat JSON, est-ce que cela supprime l'aide?

+0

Bonne prise. J'étais sur le point de dire la même chose. +1 – ichiban

+0

En fait, il y avait plus de lignes que je n'ai pas collées pour garder les choses simples. Dans l'original il n'y a pas de virgule après la dernière ligne. Je suis en train d'éditer la question maintenant .. –

+0

Vous dites "ceci est seulement pour un enregistrement", .. vous retournez un tableau de ces objets enveloppés dans [{square: "brackets}}]? –

0

Je suis nouveau à Firebug, mais vous avez besoin de comprendre ce qui est indéfini ici


$.getJSON("ajax/person_output.aspx", { 'uID': 1 }, function(data) { 
      $.each(data.items, function(i, item) { 
      $("").html(item.first_name).appendTo("#content"); 
       }); 
      }); 

Il est soit des données, data.items, élément ou item.first_name. Si vous renvoyez un tableau, n'avez-vous pas besoin de faire quelque chose comme data.items [i], plutôt que item.first_name? La façon dont vous l'avez installé maintenant, "item" est probablement 0,1,2,3 ... n