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

5

如何正确地将基于SOAP的ASP.NET Web服务转换为基于JSON的响应? 然后如何从jQuery调用这些服务?

在集成基于jQuery的AJAX和ASP.NET时有哪些"最佳实践"? 有哪些文章或书籍可以参考?

3个回答

3

Bobby Saores的文章看起来非常完美。我打算尝试实现它,因为它似乎会支持我的项目。 - htm11h

3

将JSON转换为.NET类可以使用System.Runtime.SerializationSystem.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();
    }
}

0

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

如果你要传输HTML而不是轻量级的JSON对象,为什么不直接使用Update Panels呢?JSON的理念是尽量减少数据传输量,从而实现快速的带外响应。 - redsquare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接