2010-05-11 9 views
5

Ho un codice javascript che elabora l'output JSON dai servizi Web asp.net creati con il framework 2.0. Ora ho bisogno di supportare i dati restituiti dai servizi web framework 3.5.Rimozione dell'oggetto "d" dall'output json del servizio Web ASP.Net

Il mio codice javascript presuppone un elenco di oggetti come valore restituito, che funziona correttamente in 2.0. Tuttavia, nel framework 3.5, la lista è racchiusa in un oggetto "d". C'è un modo per rimuovere il wrapper "d" e restituire semplicemente la lista?

preferirei risolvere questo onthe lato server

+3

Nota a margine: l'involucro 'd' è una misura di sicurezza. Vedi http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/#comment-34045 –

+0

related: http://stackoverflow.com/questions/830112/ cosa-fa-d-in-json-media –

risposta

5

Non è possibile configurare 3.5+ servizi non restituire il .d. È positivo che ci sia anche lì, perché protegge da uno scenario di dirottamento JSON ingannevole che esiste quando l'entità JSON esterna è una matrice.

ASP.NET I proxy lato client di AJAX nascondono automaticamente il .d da voi. Se ti stai intromettendo, presumo che tu stia utilizzando qualcosa come jQuery per chiamare il servizio? You can normalize the .d in jQuery by using its DataFilter callback, ad esempio.

+0

grazie. Io uso mootools. Troverà qualcosa del genere per mootools o roll mio – Midhat

0

Bene, se si ha il vantaggio di cambiare sul lato client, il modo migliore è usare jquery e troverete un sacco di soluzioni. Ma se vuoi rimuovere "d" sul livello di servizio il modo migliore è riscrivere il tuo webservice in Web Api (puoi usare anche WCF). Web Api non restituisce "d" in risposta.

Problemi correlati