如何正确地将基于SOAP的ASP.NET Web服务转换为基于JSON的响应? 然后如何从jQuery调用这些服务?
在集成基于jQuery的AJAX和ASP.NET时有哪些"最佳实践"? 有哪些文章或书籍可以参考?
如何正确地将基于SOAP的ASP.NET Web服务转换为基于JSON的响应? 然后如何从jQuery调用这些服务?
在集成基于jQuery的AJAX和ASP.NET时有哪些"最佳实践"? 有哪些文章或书籍可以参考?
将JSON转换为.NET类可以使用System.Runtime.Serialization和System.Runtime.Serialization.JSON。我猜你更感兴趣的是从客户端到服务器的函数调用设置。我认为值得尝试this tutorial。
在本教程中,您需要添加一个webservice '.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();
}
}
我已经使用ASP.Net Ajax有一段时间了,但从来没有担心过JSON或XML通信。相反,我使用Web服务直接返回内容,您可以使用innerHTML设置。
这非常容易实现。只需创建一个Web服务(ASMX)文件,并将您的方法声明为WebMethods(设置WebMethod属性)。
现在,您几乎可以像普通函数一样从Javascript代码中调用Web服务。
函数的结果将返回到回调函数。这是结构
//Webmethod returns some HTML content
Myservice.DoSomething(myParam, callBackFunction);
//Content is set on the webpage
function callBackFunction(result){
document.getElementById('myElemID').innerHTML = result;
}