Jquery Ajax+.ashx Json数据格式

       1.Json(JavaScript Object Notation) ,是轻量级的文本数据交换格式。JSON 比 XML 更小、更快,更易解析。在Ajax,传递数据时长用到。 JSON 语法是 JavaScript 语法的子集,可用eval()可将Json对象转换为Javascript对象,这样就可以用Javascript来处理json了

      2. Json.Net :一个比较不错.net json框架。它可用灵活的支持.net对象的序列化和反序列化,可用支持Linq操作Json,支持Json与xml的转换,支持net2.0以上版本,它序列化与反序列化比Net自带处理Json类效率要高。

         可以在NuGet(库类程序包管理器)--->库类程序包管理器控制器——>输入“PM> Install-Package Newtonsoft.Json” VS 会自动下载最新的Json.Net插件。

      3.Jquery 文件

        

<script type="text/javascript">
        $(function () {
            $("#sand").click(function () {
                $.ajax({
                    type: "GET",//发送格式
                    url: "JsonAjax.ashx", //发送地址
                    //发送参数,encodeURL()给参数编码,因为参数是中文可能出现乱码情况
                    data: { name: encodeURI($("#author").val()), content: encodeURI($("#content").val()) },
                    //返回数据格式
                    datatype: "json",
                    //Ajax执行成功后函数
                    success: function (obj) {
                    //Eval()方法把Json对象转换成Javascript对象,这个Javascript才能正确处理Json数据
                        var data = eval(obj)
                        $("#Msg").empty();
                        //循环数据
                        $(data).each(function () {
                        //插入对象到DIV中
                            $("#Msg").append("User:" + this['user'] + "<br/>");
                            $("#Msg").append("Msg:" + this['text'] + "<br/>");
                            $("#Msg").append("Date:" + this['time'] + "<br/>");
                        });
                    },
                    error: function () {
                        alert("error");
                    }
                });
            });
        });
    </script>

     4.  ashx文件

          

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json;//Json.Net类库

namespace WeAppJqueryChart
{
    /// <summary>
    /// JsonAjax1 的摘要说明
    /// </summary>
    public class JsonAjax1 : IHttpHandler
    {
        
        public void ProcessRequest(HttpContext context)
        {
            //用System.Web.HttpUtility.UrlDecode()方法解码接收的参数
            //Ajax data传的参数必须用context.request["xxx"]方式接收参数
            string name = System.Web.HttpUtility.UrlDecode(context.Request["name"]);
            string content = System.Web.HttpUtility.UrlDecode(context.Request["content"]);
            IISHandler ajax = new IISHandler();
            List<IISHandler.Message> messageList = new List<IISHandler.Message>();
            //接收数据保存数据
            if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(content))
            {
                IISHandler.Message message = new IISHandler.Message() { id = Guid.NewGuid().ToString(), user = name, text = content, time = DateTime.Now.ToString() };
                messageList.Add(message);
                ajax.Save(messageList);
            }
            //返回要查询的数据
            List<IISHandler.Message> ShowList = ajax.GetMessages(10);
            //用Json.Net类库List<IISHandler.Message>的Json序列化
            string Json = JsonConvert.SerializeObject(ShowList, Formatting.Indented);
            //返回Json数据
            context.Response.Write(Json);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

            5.web.config 配置.ashx文件

          

  <system.web>
 <httpHandlers>
<!--<add verb="路径名称(表示只有请求路径为“JsonAjax.ashx"才执行Type文件) path=(请求类型Post,Get) type=(文件唯一标识(命名空间+.ashx文件名))"/>-->
      <add verb="JsonAjax.ashx" path="*" type="WeAppJqueryChart.JsonAjax" validate="true"/>
    </httpHandlers>
</system.web>

 

    

posted @ 2012-12-07 16:01  巴顿道儿  阅读(892)  评论(0编辑  收藏  举报