ASP.NET - 使用 jQuery 实现基于 JSON 的 Web 服务的正确方法是啥?
Posted
技术标签:
【中文标题】ASP.NET - 使用 jQuery 实现基于 JSON 的 Web 服务的正确方法是啥?【英文标题】:ASP.NET - What is the correct approach to JSON based web services with jQuery?ASP.NET - 使用 jQuery 实现基于 JSON 的 Web 服务的正确方法是什么? 【发布时间】:2010-09-21 21:51:32 【问题描述】:将基于 ASP.NET SOAP 的 Web 服务转换为基于 JSON 的响应的正确方法是什么? ...然后从 jQuery 调用这些?
在集成基于 jQuery 的 AJAX 和 ASP.NET 时,什么是“最佳实践”? 文章?书籍?
【问题讨论】:
【参考方案1】:可以使用 System.Runtime.Serialization 和 System.Runtime.Serialization.JSON 将 JSON 转换为 .NET 类。我怀疑您对设置从客户端到服务器的函数调用更感兴趣。我认为值得一试this tutorial。
在本教程中,您需要添加一个网络服务“.asmx”文件。在 asmx 文件中,您将能够创建可从客户端脚本调用的函数。您的 ASP.NET 页面还可以引用生成的客户端脚本来调用 .asmx 函数。
如果你真的想进行 JSON 序列化,你也可以使用以下方法:
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
public class JsonSerializer
// To make a type serializeable, mark it with DataContractAttribute
// To make a member of such types serializeable, mark them with DataMemberAttribute
// All types marked for serialization then need to be passed to JsonSerialize as
// parameter 'types'
static public string JsonSerialize(object objectToSerialize, params Type[] types)
DataContractJsonSerializer serializer = new DataContractJsonSerializer(
types[0], types.Skip(1));
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, objectToSerialize);
ms.Seek(0, SeekOrigin.Begin);
StreamReader sr = new StreamReader(ms);
return sr.ReadToEnd();
【讨论】:
【参考方案2】:Bobby Soares 在 codproject.com 上的以下文章 Extending an existing ASP.NET Web Service to support JSON 讨论了使用自定义方法属性来实现所需的结果。
【讨论】:
Bobby Saores 的文章看起来很完美。我很想尝试实现它,因为它看起来会支持我的项目。【参考方案3】:我使用 ASP.Net Ajax 有一段时间了,但从未担心过 JSON 或 XML 通信。相反,我使用 Web 服务直接返回您可以使用 innerhtml 设置的内容。
这很容易实现。只需创建一个 Web 服务 (ASMX) 文件,并将您的方法声明为 WebMethods(设置 WebMethod 属性)。
现在您可以像使用常规函数一样从 javascript 代码调用您的网络服务。
函数的结果将返回给回调函数。这是结构
//Webmethod returns some HTML content
Myservice.DoSomething(myParam, callBackFunction);
//Content is set on the webpage
function callBackFunction(result)
document.getElementById('myElemID').innerHTML = result;
【讨论】:
如果您需要通过网络传递 html 而不是轻量级 json 对象,为什么不直接使用更新面板呢? json 的想法是将 k 保持在最低限度,从而具有快速的带外响应以上是关于ASP.NET - 使用 jQuery 实现基于 JSON 的 Web 服务的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC使用jQuery实现Autocomplete
如何使用 C#、ASP.NET、SQL Server 端处理实现 jQuery DataTables 插件?
基于 jQuery 的专业 ASP.NET WebForms/MVC 控件库!