ASP.NET - 使用jQuery的基于JSON的Web服务的正确方法是什么?

问题描述:

将基于ASP.NET SOAP的Web服务转换为基于JSON的响应的正确方法是什么? ...然后从jQuery调用这些?ASP.NET - 使用jQuery的基于JSON的Web服务的正确方法是什么?

当基于jQuery的AJAX和ASP.NET集成时,什么是“最佳实践”? 文章?图书?

JSON转换到.NET类可以用System.Runtime.SerializationSystem.Runtime.Serialization.JSON来完成。我怀疑你对设置从客户端到服务器的函数调用更感兴趣。我认为这值得尝试this tutorial

在本教程中,您需要添加一个web服务'.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(); 
    } 
} 

以下关于使用自定义的方法codproject.com会谈文章Extending an existing ASP.NET Web Service to support JSON由鲍比·苏亚雷斯属性来达到期望的结果。

+0

鲍比索雷斯的文章看起来很完美。我很想尝试实现它,因为它看起来会支持我的项目。 – htm11h 2012-10-03 14:04:50

我已经使用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; 
} 
+0

为什么不只是使用更新面板,如果你将有传递HTML的开销,而不是轻量级的json对象? json的想法是保持k的电线最小,因此具有快速的带外响应 – redsquare 2008-11-12 07:46:27