• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用ASP.NET一般处理程序或WebService返回JSON的实现代码

    示例代码下载: http://zsharedcode.googlecode.com/files/JQueryElementDemo.rar

    本文中所包含的内容如下:

      * 准备
      * 一般处理程序/ashx
      * WebService/asmx准备

    如果希望通过 ashx 或者 asmx 来返回 JSON, 那么需要引用程序集 System.Web.Extensions.dll, 在 .NET 3.5, 4.0 中已经默认包含. 对于 .NET 2.0, 3.0, 需要安装 ASP.NET 2.0 AJAX, 可以在 http://www.microsoft.com/download/en/details.aspx?displaylang=enid=883 下载.

    一般处理程序/ashx

    使用一般处理程序返回 JSON, 对于不同版本的 .NET 都是类似, 请看下面的 handler.ashx 的代码:

    复制代码 代码如下:

    %@ WebHandler Language="C#" Class="handler" %>
    using System;
    using System.Web;
    using System.Web.Script.Serialization;
    using System.Collections.Generic;
    public class handler : IHttpHandler
    {
    public void ProcessRequest(HttpContext context)
    {
    context.Response.ContentType = "text/javascript";
    context.Response.Cache.SetNoStore ( );
    string name = context.Request["name"];
    SortedDictionarystring, object> values = new SortedDictionarystring, object>();
    values.Add("message",
    string.IsNullOrEmpty(name) ? "无名氏" :
    string.Format("你好 {0}, {1}", name, DateTime.Now));
    context.Response.Write(new JavaScriptSerializer().Serialize(values));
    }
    public bool IsReusable
    {
    get { return false; }
    }
    }

    上面的例子中, 通过 JavaScriptSerializer 类的 Serialize 方法, 将对象转化为 JSON 对应的字符串. 而转化的对象是 SortedDictionary, 会生成 { "message": "你好 x, 20xx-xx-xx xx:xx:xx" } 这样类似的字符串. 如果需要返回数组, 可以定义 object[] 来转换. 代码中还使用了 context.Response.Cache.SetNoStore ( ); 来让浏览器每次请求 ashx 时都重新访问, 而不是使用缓存.
    如果使用 jQuery, 可以使用下面的函数来接收 JSON:
    复制代码 代码如下:

    function(data){
    alert(data.message);
    }

    WebService/asmx
    在不同版本的 .NET 中, 通过 javascript 访问 WebService 并返回 JSON 是略有不同的. 首先, 可以分别采用不同的 Web.config 文件.法全部列出, 如有需要请参考:
    .NET 2.0, 3.0 Web.config
    复制代码 代码如下:

    ?xml version="1.0"?>
    configuration>
    system.web>
    compilation debug="true">
    assemblies>
    add
    assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    /assemblies>
    /compilation>
    pages/>
    httpHandlers>
    remove verb="*" path="*.asmx"/>
    add verb="*" path="*.asmx"
    type="System.Web.Script.Services.ScriptHandlerFactory"
    validate="false"/>
    /httpHandlers>
    /system.web>
    /configuration>

    .NET 3.5 Web.config
    .NET 4.0 Web.config
    以上两个版本的 Web.config 可以在示例压缩包中的 Web.3.5.config 和 Web.4.config 中查看.
    下面是 webservice.asmx/webservice.cs 的代码:
    复制代码 代码如下:

    %@ WebService Language="C#" CodeBehind="~/App_Code/webservice.cs" Class="webservice" %>
    using System;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Web.Script.Services;
    using System.Web.Script.Serialization;
    using System.Collections.Generic;
    [WebService ( Namespace = "http://tempuri.org/" )]
    [WebServiceBinding ( ConformsTo = WsiProfiles.BasicProfile1_1 )]
    [ScriptService]
    public class webservice : System.Web.Services.WebService
    {
    [WebMethod]
    [ScriptMethod]
    public SortedDictionarystring, object> Save ( string name )
    {
    this.Context.Response.Cache.SetNoStore ( );
    SortedDictionarystring, object> values = new SortedDictionarystring, object> ( );
    values.Add ( "message",
    string.IsNullOrEmpty ( name ) ? "无名氏" :
    string.Format ( "你好 {0}, {1}", name, DateTime.Now ) );
    return values;
    }
    }

    为类添加属性 ScriptService, 并对类中的方法使用属性 ScriptMethod, 可以让 javascript 来调用这些方法. 这里不需要再使用 JavaScriptSerializer 将对象转化为 JSON 字符串, 而是直接返回对象即可. 上面的代码中返回了 SortedDictionary, 在 .NET 2.0, 3.0 中将类似于 { "message": "你好 x, 20xx-xx-xx xx:xx:xx" } 的形式, 而对于 .NET 3.5, 4.0 则是 { "d": { "message": "你好 x, 20xx-xx-xx xx:xx:xx" } }, 因此可以分别在 jQuery 中使用下面的函数来接受 JSON:
    复制代码 代码如下:

    function(data){
    alert(data.message);
    }
    function(data){
    alert(data.d.message);
    }

    JQueryElement 是开源共享的代码, 可以在 http://code.google.com/p/zsharedcode/wiki/Download 页面下载 dll 或者是源代码.

    实际过程演示: http://www.tudou.com/programs/view/rHCYHX9cmcI/, 建议全屏观看.

    欢迎访问 panzer 开源项目, http://zsharedcode.googlecode.com/ , 其中包含了 IEBrowser 控制 WebBrowser 执行各种 js 和 jQuery 脚本以及录制功能 和 jQueryUI 的 Asp.net 控件 JQueryElement.
    您可能感兴趣的文章:
    • C# .Net动态调用webService实现思路及代码
    • asp.net(c#)动态修改webservice的地址和端口(动态修改配置文件)
    • C#发送HttpPost请求来调用WebService的方法
    • C#动态webservice调用接口
    • c# JSON返回格式的WEB SERVICE
    • c#动态调用Webservice的两种方法实例
    • c#动态改变webservice的url访问地址
    • .net实现webservice简单实例分享
    • .NET C#创建WebService服务简单实例
    上一篇:jquery repeater 模仿 Google 展开页面预览子视图
    下一篇:如何限制asp.net中上传文件的大小的代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    使用ASP.NET一般处理程序或WebService返回JSON的实现代码 使用,ASP.NET,一般,处理,程序,