删除“d”来自 ASP.Net Web 服务 json 输出的对象
我有一些 javascript 代码,用于处理使用框架 2.0 构建的 asp.net Web 服务的 json 输出。现在我需要支持从框架 3.5 Web 服务返回的数据。
我的 javascript 代码假定一个对象列表作为返回值,这在 2.0 中工作得很好。然而,在框架 3.5 中,列表被包装在“d”对象中。有什么方法可以删除“d”包装并仅返回列表吗?
我更愿意在服务器端解决这个问题
I have some javascript code that processes json output from asp.net web services built with framework 2.0. Now I need to support data returned from framework 3.5 web services.
My javascript code assumes a list of objects as return value, which works fine in 2.0. However In framework 3.5, the list is wrapped in a "d" object. Is there any way I can remove the "d" wrapper and just return the list?
I would prefer to fix this onthe server side
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是解决这个问题的方法
Here is a way around that
您无法将 3.5+ 服务配置为不返回
.d
。它也存在是件好事,因为它可以防止当外部 JSON 实体是数组时存在的棘手的 JSON 劫持场景。ASP.NET AJAX 的客户端代理会自动对您隐藏
.d
。如果它妨碍了您,我假设您正在使用 jQuery 之类的东西来调用服务? 您可以标准化。例如,在 jQuery 中使用 DataFilter 回调
来实现 d
。You can't configure 3.5+ services not to return the
.d
. It's good that it's there too, because it protects from a tricky JSON hijacking scenario that exists when the outer JSON entity is an array.ASP.NET AJAX's client-side proxies automatically hide the
.d
from you. If it's getting in your way, I'm assuming you're using something like jQuery to call the service? You can normalize the.d
in jQuery by using its DataFilter callback, for example.好吧,如果你有在客户端进行更改的优势,那么最好的方法是使用 jquery,你会找到大量的解决方案。但是如果你想删除服务层上的“d”,最好的方法是在Web Api中重写你的web服务(你也可以使用WCF)。 Web Api 不返回“d”作为响应。
Well if you have the advantage of changing on the client side then best way is using jquery and you will find a ton of solutions. But if you want to remove "d" on service layer the best way is rewrite your webservice in Web Api(You can use WCF also). Web Api does not return "d" in response.