• ASP.NET利用JQuery中的Aajax实现JSON数据后台交互


         JSON简单介绍:

         JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.

      简单 JSON 示例

      按照最简单的形式,可以用下面这样的 JSON 表示名称 / 值对:

     

      { "firstName": "Brett" }

         本人使用的是Newtonsoft.Json类库。

       后台代码:

     public static class JsonHelper<T, K>
        {
            /// <summary>
            /// 序列化
            /// </summary>
            /// <param name="t"></param>
            /// <returns></returns>
            public static string JsonWriter(T t)
            {
                return JsonConvert.SerializeObject(t,new IsoDateTimeConverter());
            }
           /// <summary>
            /// 反序列化
           /// </summary>
           /// <param name="serialize"></param>
           /// <returns></returns>
            public static T JsonReader(string serialize)
            {
                return JsonConvert.DeserializeObject<T>(serialize);
            }
            /// <summary>
            /// 将DataTable转化成JSON格式
            /// </summary>
            /// <param name="dt"></param>
            /// <returns></returns>
            public static string JsonDataTable(DataTable dt)
            {
                StringBuilder jsonBuilder = new StringBuilder();
                jsonBuilder.Append("{\"");
                jsonBuilder.Append(dt.TableName.ToString());
                jsonBuilder.Append("\":[");
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    jsonBuilder.Append("{");
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        jsonBuilder.Append("\"");
                        jsonBuilder.Append(dt.Columns[j].ColumnName);
                        jsonBuilder.Append("\":\"");
                        jsonBuilder.Append(dt.Rows[i][j].ToString());
                        jsonBuilder.Append("\",");
                    }
                    jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                    jsonBuilder.Append("},");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("]");
                jsonBuilder.Append("}");
                return jsonBuilder.ToString();
            }
        }

    一般应用程序:

     public void ProcessRequest(HttpContext context)
        {
            string index= context.Request.QueryString["p"].ToString();
            if (null != index)
            {
                context.Response.Write(List(int.Parse(index)));
                context.Response.ContentType = "json/json";//设置写出的是JSON格式文件

            }
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
        private string List(int id)
        {
            C_USER user = new C_USERService().GetById(id);
            string json =JsonHelper<C_USER, int>.JsonWriter(user);
            return json;
        }   

    页面调用:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>

    <head runat="server">
        <title>Json测试</title>

        <script language="javascript" type="text/javascript" src="script/jquery-1.4.2.min.js"></script>

        <script language="javascript" type="text/javascript">
     $(document).ready(function(){
         $.ajax({
            url:"Handler.ashx?p=1",
            //dataType:"json",
            type:"post",
            success:function(json)
                    {
                     alert(json.NAME);    //NAME是实体类中的一个属性                   
                    }
         });
     });
    </script>

    </head>
    <body>
        <form id="form1">
            </form>
    </body>
    </html>

    结束:

    问题的一些总结:

    1、用Newtonsoft.Json类库3.5的版本的时候运行出异常System.Runtime..........的异常,问题是安装的Framework3.5版本是sp1.0的不存在那个方法,建议升级下或者用Newtonsoft.Json类库2.0版本

    2、当json文件写出后一直没发用,解决方法:在一般应用程序里+  context.Response.ContentType = "json/json";//设置写出的是JSON格式文件或者在Ajax那里+   dataType:"json",写出的是json格式。

    3、如果用get请求会出现URL缓存(点击第一次的时候可以第二次就不管用)解决方案:1、改用post请求或者设置一个参数(参数采用系统时间的秒)如:

    var date =new Date();

    var nocache=date.getSeconds();

    Ajax中使用范例: url:"Handler.ashx?p=1&nocache="+nocache,

    文章如果有不明之处可以留言,谢谢。

    完。

  • 相关阅读:
    BZOJ 3631 链剖+差分
    BZOJ 1103 DFS序+线段树
    BZOJ 3629 约数和定理+搜索
    198. House Robber
    152. Maximum Product Subarray
    139. Word Break
    132. Palindrome Partitioning II
    120. Triangle
    115. Distinct Subsequences
    97. Interleaving String
  • 原文地址:https://www.cnblogs.com/lovefish/p/2000127.html
Copyright © 2020-2023  润新知