当前位置:编程学习 > asp >>

jQuery Ajax 调用 WebService 返回数据表(DataTable)的方法。

本文基于 ASP.NET 4.0进行测试,无需进行配置 web.config 。前端代码如下:

HTML 代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>jQuery Ajax 调用 WebService 返回数据表(DataTable)的方法。</title>
  <script type="text/javascript" src="jquery-1.5.js"></script>
  <script type="text/javascript">
    function ParseDate(jsonDate) {
      var date = new Date(parseInt(jsonDate.substr(6)));
      return date.toLocaleString();
    }
    function GetData() {
      $.ajax({
        type: "post", //注意这里是 post
        url: "WebService.asmx/GetDataTable",
        data: "{"id":"8888"}",
        contentType: "application/json;charset=utf-8", //提交数据的方法格式
        dataType: "json", //返回数据的格式
        success: function (result) {
          //你可以 alert(result.d)看数据返回的格式
          data = jQuery.parseJSON(result.d);
          t = "<table border=1>";
          $.each(data, function (i, item) {
            t += "<tr>";
            t += "<td>" + item.UserId + "</td>";
            t += "<td>" + item.Name + "</td>";
            t += "<td>" + item.Count + "</td>";
            t += "<td>" + ParseDate(item.CreateDate)+ "</td>";
            t += "</tr>";
          })
          t += "</table>";
          $("#result").html(t);
        },
        error: function (result) { alert(result.responseText); }
      });
    }
    window.onload = GetData;

  </script>
</head>
<body>
  <div id="result"></div>
</body>
</html>

后台的WebService代码:

WebService.asmx 代码
<%@ WebService Language="C#" Class="WebService" %>

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Serialization;
using System.Collections;
using System.Collections.Generic;
using System.Data;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService
{

  [WebMethod]
  public String GetDataTable(int id)
  {
    System.Data.DataTable dt = new System.Data.DataTable();
    System.Data.DataRow dr;
    dt.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));
    dt.Columns.Add(new System.Data.DataColumn("Name", typeof(System.String)));
    dt.Columns.Add(new System.Data.DataColumn("Count", typeof(System.Double)));
    dt.Columns.Add(new System.Data.DataColumn("CreateDate", typeof(System.DateTime)));
    dt.PrimaryKey = new System.Data.DataColumn[] { dt.Columns["UserId"] };
    System.Random rd = new System.Random();
    for (int i = 0; i <6; i++)
    {
      dr = dt.NewRow();
      dr[0] = i + i;
      dr[1] = "【红黑联盟】" + id.ToString();
      dr[2] = System.Math.Ceiling(rd.NextDouble() * 1000);
      dr[3] = DateTime.Now.AddDays(rd.Next(100) - rd.Next(100));
      dt.Rows.Add(dr);
    }
   
    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
    Dictionary<string, object> row = null;

    foreach (DataRow dr1 in dt.Rows)
    {
      row = new Dictionary<string, object>();
      foreach (DataColumn col in dt.Columns)
      {
        row.Add(col.ColumnName, dr1[col]);
      }
      rows.Add(row);
    }
    return serializer.Serialize(rows);
  }
}
返回的显示结果:

0 【红黑联盟】8888 939 2010年11月26日 11:04:16
2 【红黑联盟】8888 485 2011年2月28日 11:04:16
4 【红黑联盟】8888 708 2011年3月31日 11:04:16
6 【红黑联盟】8888 77 2011年2月10日 11:04:16
8 【红黑联盟】8888 967 2011年1月31日 11:04:16
10 【红黑联盟】8888 869 2010年11月30日 11:04:16

 

补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,