62,253
社区成员
发帖
与我相关
我的任务
分享
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CallWebMethod.aspx.cs" Inherits="ajax_jquery_CallWebMethod" %>
<!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 id="Head1" runat="server">
<title></title>
<style type="text/css">
.jTemplatesTest {
background: #DDD;
border: 1px solid #000;
margin: 2em;
width: 480px;
}
.jTemplatesTest * {
padding: 4px;
margin: 2px auto;
}
.jTemplatesTest td,tr {
background: #EEE;
border: 1px solid black;
}
</style>
<script src="jquery-1.2.6.min.js" type="text/javascript"></script>
<script src="jquery-jtemplates.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$("#start").click(function() {
$.ajax({
type: "POST",
url: "jQueryWebService.asmx/GetDT",
data: "{}",
contentType: "application/json; charset=utf-8",
success: function(msg) {
ApplyTemplate(eval('(' + msg.text + ')'));
}
});
});
});
function ApplyTemplate(data) {
$('#result').setTemplateElement('template');
$('#result').processTemplate(data);
}
</script>
</head>
<body>
<form id="form1" runat="server">
获取数据并填充表格:<input type="button" id="start" value="运行" />
<!-- Template content -->
<textarea id="template" style="display:none">
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody>
{#foreach $T.d as record}
<tr>
<td>{$T.record.ID}</td>
<td>{$T.record.Name}</td>
</tr>
{#/for}
</tbody>
</table>
</textarea>
<!-- Output elements -->
<div id="result" class="jTemplatesTest"></div>
</form>
</body>
</html>
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Text;
/// <summary>
/// jQueryWebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class jQueryWebService : System.Web.Services.WebService
{
public jQueryWebService()
{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
private DataTable GetDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(Int32)));
dt.Columns.Add(new DataColumn("Name", typeof(String)));
DataRow dr = dt.NewRow();
dr[0] = 1;
dr[1] = "郑";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "李";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 3;
dr[1] = "王";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 4;
dr[1] = "张";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 5;
dr[1] = "刘";
dt.Rows.Add(dr);
return dt;
}
private string CreateJsonParameters(DataTable dt)
{
StringBuilder JsonString = new StringBuilder();
//Exception Handling
if (dt != null && dt.Rows.Count > 0)
{
JsonString.Append("{ ");
JsonString.Append("d:[ ");
for (int i = 0; i < dt.Rows.Count; i++)
{
JsonString.Append("{ ");
for (int j = 0; j < dt.Columns.Count; j++)
{
if (j < dt.Columns.Count - 1)
{
JsonString.Append(dt.Columns[j].ColumnName + ":" + "\"" + dt.Rows[i][j].ToString() + "\",");
}
else if (j == dt.Columns.Count - 1)
{
JsonString.Append(dt.Columns[j].ColumnName + ":" + "\"" + dt.Rows[i][j].ToString() + "\"");
}
}
/**/
/*end Of String*/
if (i == dt.Rows.Count - 1)
{
JsonString.Append("} ");
}
else
{
JsonString.Append("}, ");
}
}
JsonString.Append("]}");
//{ d:[ { ID:"1",Name:"郑"}, { ID:"2",Name:"李"}, { ID:"3",Name:"王"}, { ID:"4",Name:"张"}, { ID:"5",Name:"刘"} ]}
return JsonString.ToString();
}
else
{
return null;
}
}
[WebMethod]
public string GetDT()
{
return CreateJsonParameters(GetDataTable());
}
}
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<style type="text/css">
.show{ display:block;}
.hide{ display:none;}
</style>
<script type="text/javascript" src="jquery-1.3.1.js"></script>
<script type="text/javascript">
//这个方法把ajax方法封装一下,方便调用。
function myajax(){
//var obj=jsonData();
$.ajax({
type:'post',
url:'ajax.aspx',
data:jsonData(),//可以直接加一个函数名。
dataType:'json',
beforeSend:beforecall,
success:callback
});
}
//封装json数据,为了代码清晰
function jsonData(){
var jsonStr="({";
jsonStr+="\"name\":";
jsonStr+="\"zhouyongli\"";
jsonStr+=",";
jsonStr+="\"birth\":";
jsonStr+="\"19840307\"";
jsonStr+="})";
return eval(jsonStr);//关键在于转换。
}
//调用前方法,不成功
function beforecall(){
$('#wait').addClass("show").append('调出中...');
//alert(jsonData());//测试是否调用
}
//回调函数
function callback(data){
$('#response').append(data.name+data.birth);
$('#wait').css("display","none");
}
//onload()事件
$(function(){
$('#confirm').click(myajax);
})
</script>
</head>
<body>
<div id="confirm">点击</div>
<div id="response">接收后台数据</div>
<div id="wait" class="hide">hello</div>
</body>
</html>
public partial class ajax : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Hashtable ht = new Hashtable();
string name = Request.Params["name"].ToString();
string birth = Request.Params["birth"].ToString();
if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(birth))
{
Response.ContentType = "Application/json";
//Response.Write(CreareJson("this is ok!", 1, name, birth));
ht.Add("info", "成功了");
ht.Add("sta", "状态");
ht.Add("name", name);
ht.Add("birth", birth);
Response.Write(CreateJsonParams(ht));
}
Response.End();
}
private string CreateJsonParams(Hashtable items)
{
string returnStr = "";
foreach (DictionaryEntry item in items)
{
returnStr += "\"" + item.Key.ToString() + "\":\"" + item.Value.ToString() + "\",";
}
return "{" + returnStr.Substring(0, returnStr.Length - 1) + "}";
}
}