• Ajax处理后台返回的Json数据


    /// <summary>        

    /// 将对象序列化成Json格式字符串        

    /// </summary>        

    /// <typeparam name="T"></typeparam>        

    /// <param name="t"></param>        

    /// <returns></returns>        

    public static string JsonSerializer<T>(T t)        

    {            

    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));            

    MemoryStream ms = new MemoryStream();            

    ser.WriteObject(ms, t);            

    string jsonStr = System.Text.Encoding.UTF8.GetString(ms.ToArray());            

    ms.Close();            

    string p = @"\\Data\((\d+)\+\d|\)\\/";            

    MatchEvaluator mc = new MatchEvaluator(ConvertJsonDateToDateString);            

    Regex reg = new Regex(p);            

    return reg.Replace(jsonStr, mc);        

    }

           

    /// <summary>        

    /// 日期格式转换        

    /// </summary>        

    /// <param name="m"></param>        

    /// <returns></returns>        

    public static string ConvertJsonDateToDateString(Match m)        

    {            

    string ss = string.Empty;            

    DateTime dt = DateTime.Parse(m.Groups[0].Value);            

    dt = dt.ToUniversalTime();            

    TimeSpan ts = dt - DateTime.Parse("1970-01-01");            

    return string.Format("\\/Date({0}+0800)\\/",ts.TotalMilliseconds);        

    }

    下面以一个例子为例:

    [WebMethod]
    public string HelloWorld(string ss)
    {
                string conStr = System.Configuration.ConfigurationManager.ConnectionStrings["conStr"].ToString();
                SqlConnection conn = new SqlConnection(conStr);
                SqlDataAdapter da = new SqlDataAdapter("select * from member", conn);//查询Member表
                DataTable dt = new DataTable();
                da.Fill(dt);
                //必须设置TableName,此设置为Member表名,可随意
                dt.TableName = "Member";
                return JsonSerializer<DataTable>(dt);
    }

    那么在前台网页获取数据时

    $(function () {
                            $.ajax({
                                type: "POST",
                                contentType: "application/json",
                                dataType: "json",
                                data: "{}",
                                url: "WebService1.asmx/HelloWorld",
                                success: function (data) {
                                    var data = $.parseJSON(data.d);//必须要
                                    $("div").html("");
                                    var re = "<table>";
                                    //find("Member")与之前设置的TableName名称一致,MemberId、MemberName为表中字段名
                                    $.each($(data).find("Member"), function (temp, i) {
                                        var ss = $(i).find("MemberId")[0].innerText;
                                        re = re + "<tr><td>" + $(i).find("MemberId")[0].innerText + "</td><td>" + $(i).find("MemberName")[0].innerText + "</td></tr>";
                                    });
                                    re = re + "</table>";
                                    $("div").html(re);
                                },
                                error: function (data) { alert(data.responseText); }
                            });
            });

    另注:当data参数中包含有单引号时,首先在data中用escape进行编码,然后在读取时用Server.UrlDecode进行解码即可。

         此方法主要适用于DataTable的序列化,若是集合或是Model直接取属性即可。

  • 相关阅读:
    SSM知识点与整合之Spring知识点(pom.xml需要依赖的jar或者plugin)
    Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第十三集之Redis的单机版搭建】
    maven pom.xml(公司版)
    spring开发需要的配置文件
    Python socket编程之六:多窗口的应用
    subplot的应用
    Python socket编程之五:更新分时图
    Python序列的切片操作与技巧
    Python socket编程之四:模拟分时图
    NSNotificationCenter 注意
  • 原文地址:https://www.cnblogs.com/jdk123456/p/3090343.html
Copyright © 2020-2023  润新知