2009-09-15 6 views
1

J'utilise la commande ASP.NETJSON Sortie de données dans ASP.NET

var returnValue = new JsonResult { Data = items.Skip((pageNumber - 1) * pageSize).Take(pageSize) }; 

return returnValue; 

pour retourner le contenu paginés d'une table via JSON, mais quand je suis arrivé à essayer de l'analyser, en jQuery, la $.each prend chaque caractère comme un élément individuel.

La sortie de c'est le long des lignes de

[{"ItemNumber":1,"Description":"Description1"}, {"ItemNumber":2,"Description":"Description2"}] 

liste toutes les lignes et les champs correctement. Cependant cela ne me ressemble pas correctement formaté JSON (je crois qu'il devrait être enfermé dans {}), est-ce?

Si ce n'est pas ce que je devrais faire pour sortir correctement la table? Si oui, comment puis-je boucler chaque élément dans jQuery, et extraire les valeurs du champ?

+0

Si vous recherchez un bon emplacement pour les informations de référence ASP.NET/jQuery, consultez http://encosia.com/, en particulier http://encosia.com/2008/03/27/using-jquery -to-consommer-aspnet-json-web-services/ – jrummell

Répondre

1

JSON est correctement formaté.

Vous pouvez essayer d'évaluer avec

var someVar = eval(jsonValue); 

mais cela peut conduire à XSS.

Ou même de l'utiliser plugin.

Cette question peut aussi être liée.

+0

$ .getJSON l'a trié. Y at-il des problèmes connus avec l'utilisation de cela (je pensais avoir lu quelque part quelqu'un disant de ne pas l'utiliser)? –

+0

Non, puisque je crois que cette méthode assainit votre réponse avant de l'analyser. – wtaniguchi

0

En fait, l'utilisation de eval peut être dangereuse: contrairement au cas où il est inclus dans {}, il est possible de subvertir la construction d'un tableau. Cela se produit lorsque eval essaie de créer un tableau en utilisant le constructeur Array. Voir this post. Si vous n'êtes pas inquiet à ce sujet, vous pouvez utiliser eval - pour la sécurité, le plugin JQuery dans la réponse de wtaniguchi.

+0

Oui, personnellement, je n'utilise jamais eval pour évaluer JS. Je ne vais pas comment les méthodes d'évaluation de sécurité JSON ne sont pas arrivés au cœur de jQuery. – wtaniguchi

0

Ne pouvez-vous pas boucler comme ça?

for (i = 0; i <= returnValue.length - 1; i++){ 
    //access your properties like this: 
    returnValue[i].ItemNumber; 
    returnValue[i].Description; 
} 

Je ne sais pas si vous utilisez JsonResult fonctionnera comme ça, mais si vous retournez une liste d'objets dans votre code côté serveur, il fonctionnera comme ça. En supposant que vous utilisez Asp.Net AJAX, il se sérialisera automatiquement.

0

Pour autant que je sais qu'il existe aussi le désérialiseur JSON suivant Asp.net Ajax:

Sys.Serialization.JavaScriptSerializer.deserialize(...) 

Vous auriez à parcourir pour l'utilisation exacte puisque je ne sais pas par entendre maintenant.

0

utiliser la fonction de AJAX.NET Sys.Serialization.JavaScriptSerializer.deserialize pour obtenir mes données JSON quand je l'ai créé à l'aide System.Web.Script.Serialization.JavaScriptSerializer.Serialize.