2010-05-11 25 views
5

Tengo un código javascript que procesa la salida json de los servicios web asp.net creados con framework 2.0. Ahora necesito dar soporte a los datos devueltos por los servicios web de Framework 3.5.Eliminación del objeto "d" del servicio web ASP.Net json output

Mi código de JavaScript asume una lista de objetos como valor de retorno, que funciona bien en 2.0. Sin embargo, en el marco 3.5, la lista está envuelta en un objeto "d". ¿Hay alguna manera de eliminar el contenedor "d" y simplemente devolver la lista?

yo preferiría solucionar este enel lado del servidor

+3

Nota al margen: el envoltorio 'd' es una medida de seguridad. Ver http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/#comment-34045 –

+0

relacionado: http://stackoverflow.com/questions/830112/ what-does-d-in-json-mean –

Respuesta

5

No puede configurar 3.5 + servicios no devolver el .d. Es bueno que esté allí también, porque protege de un escenario de secuestro JSON complicado que existe cuando la entidad JSON externa es una matriz.

ASP.NET Los proxies del lado del cliente de AJAX ocultan automáticamente el .d. Si se interpone en tu camino, supongo que estás usando algo como jQuery para llamar al servicio. You can normalize the .d in jQuery by using its DataFilter callback, por ejemplo.

+0

gracias. Yo uso mootools. Encontraré algo así para mootools o rollo mío – Midhat

0

Bueno, si tiene la ventaja de cambiar en el lado del cliente, la mejor forma es utilizando jquery y encontrará un montón de soluciones. Pero si desea eliminar "d" en la capa de servicio, la mejor manera es reescribir su servicio web en Web Api (también puede usar WCF). Web Api no devuelve "d" en respuesta.

Cuestiones relacionadas