2010-05-11 62 views
5

我有一些JavaScript代碼,用於處理從使用框架2.0構建的asp.net web服務輸出json輸出。現在我需要支持從framework 3.5 Web服務返回的數據。從ASP.Net Web服務中刪除「d」對象json輸出

我的javascript代碼假設一個對象列表作爲返回值,它在2.0中正常工作。但是,在框架3.5中,列表被包裝在一個「d」對象中。有什麼辦法可以刪除「d」包裝並返回列表?

我寧願解決這個onthe服務器端

+3

備註:「d」包裝是一種安全措施。見http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/#comment-34045 – 2010-05-11 14:34:42

+0

相關:http://stackoverflow.com/questions/830112/ what-does-d-in-json- – 2012-09-21 01:44:46

回答

5

您不能配置3.5+服務不回.d。它也是存在的,因爲它可以防止外部JSON實體是數組時存在的棘手JSON劫持情況。

ASP.NET AJAX的客戶端代理會自動隱藏您的.d。如果問題得到解決,我假設你正在使用類似jQuery的方式來調用服務?例如,You can normalize the .d in jQuery by using its DataFilter callback

+0

謝謝。我使用mootools。對於mootools會找到類似這樣的東西,或者滾動我自己的東西 – Midhat 2010-05-11 17:48:27

0

那麼,如果你有改變客戶端的優勢,那麼最好的方法是使用jQuery,你會發現很多解決方案。但是如果你想刪除服務層上的「d」,最好的方法是在Web Api中重寫你的webservice(你也可以使用WCF)。 Web Api不會返回「d」作爲響應。