【发布时间】:2009-05-07 15:58:03
【问题描述】:
在不使用任何第三方工具的情况下,提供 JSON 响应数据的理想方式是什么?
我正在考虑让一个 ASPX 应用程序页面只返回 json 字符串响应。有什么想法吗?
【问题讨论】:
标签: .net ajax json response.write
在不使用任何第三方工具的情况下,提供 JSON 响应数据的理想方式是什么?
我正在考虑让一个 ASPX 应用程序页面只返回 json 字符串响应。有什么想法吗?
【问题讨论】:
标签: .net ajax json response.write
最简单的方法是创建一个带有[WebMethod]属性的方法,响应会自动被JSON序列化。自己试试吧:
[WebMethod]
public static string GetDateTime()
{
return DateTime.Now.ToString();
}
Ajax 调用 URL 将是:
Page.aspx/GetDateTime要传递参数,只需将它们添加到函数中:
[WebMethod]
public static int AddNumbers(int n1, int n2)
{
return n1 + n2;
}
我正在使用 jQuery,所以 data: 对象将设置为:
data: "{n1: 1, n2: 2}",
另请注意,返回的 JSON 对象将如下所示:
{"d":[3]}
数据中多余的"d"在这里解释:http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/
【讨论】:
不是一个 aspx 页面,而是一个 ashx 处理程序。为了使这更容易,.Net 3.5 内置了serialization support for JSON。
【讨论】:
查看 ASP.NET 框架提供的 JavascriptSerializer 类。通常,您会在 WebService 中的 Page Method 或 WebMethod 中使用它来返回序列化为 JSON 的对象。
请参阅MSDN here 上的参考资料。
【讨论】:
我通常使用带有 ScriptService 属性和 ScriptManager 的 Web 服务 (asmx)。与一些 jQuery 插件有一些轻微的不兼容,但并不严重,我不必处理任何手动序列化。
【讨论】: