2010-05-11 12 views
5

Mam trochę kodu javascript, który przetwarza dane wyjściowe json z serwisów internetowych asp.net zbudowanych za pomocą frameworka 2.0. Teraz muszę obsługiwać dane zwracane z usług sieci 3.5.Usuwanie obiektu "d" z usługi jsonowej usługi WWW ASP.Net

Mój kod javascript zakłada listę obiektów jako wartość zwracaną, która działa poprawnie w wersji 2.0. Jednak w ramce 3.5 lista jest zawijana w obiekt "d". Czy istnieje sposób, aby usunąć opakowanie "d" i po prostu zwrócić listę?

wolałbym, aby to naprawić opiece stronie serwera

+3

Nota boczna: opakowanie "d" jest środkiem bezpieczeństwa. Zobacz http://encosia.com/2009/02/10/a-breaking-change-betweenversions-of-aspnet-ajax/#comment-34045 –

+0

powiązanych: http://stackoverflow.com/questions/830112/ co-does-d-in-json-znaczy –

Odpowiedz

5

Nie można skonfigurować 3.5+ usług nie zwrócić .d. Dobrze, że tam też jest, ponieważ chroni przed trudnym scenariuszem porwania JSON, który istnieje, gdy zewnętrzna jednostka JSON jest tablicą.

Programiści ASP.NET AJAX po stronie klienta automatycznie ukrywają przed użytkownikiem .d. Jeśli to przeszkadza, zakładam, że używasz czegoś takiego jak jQuery, aby zadzwonić do usługi? You can normalize the .d in jQuery by using its DataFilter callback, na przykład.

+0

dzięki. Używam mootools. Znajdę coś takiego dla mootools lub roll moje własne – Midhat

0

Jeśli masz przewagę polegającą na zmianie po stronie klienta, najlepszym sposobem jest użycie jquery, a znajdziesz mnóstwo rozwiązań. Ale jeśli chcesz usunąć "d" na warstwie usługi, najlepszym sposobem jest napisanie swojego webservice w Web Api (możesz również użyć WCF). Web Api nie zwraca "d" w odpowiedzi.

Powiązane problemy