Asp.net下使用Jquery Ajax传送和接收DataTable的代码


Posted in Javascript onSeptember 12, 2010

服务器再把GridView反构造成DataTable, 再给DataTable增加一行之后,绑定到GridView,然后发回客户端...
能不能简单一点呢?
在使用Ajax数据请求数据,通常都是简单格式,比如String,信息量较少。当然也可以请求回XML,但是XML数据冗余多,取到客户端处理比json麻烦的多。
能不能简单一点呢?
上面这些问题,如果DataTable与JSON类型可以方便的相互转换,都可以迎刃而解了。
优点:1)避免不必要的回传;
2)精简异步请求数据的大小 ;
3)解决数据量较大时,数据发送与接收繁琐的问题。
既然好处这么多,我们上代码吧。
前台代码:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> 
<script type="text/javascript" src="js/json2.js"></script> 
<script type="text/javascript"> 
//onload 
$(function() { 
//点击botton1 
$("#botton1").click(function() { 
var url = "default.aspx?ajax=1"; 
var dtb = generateDtb(); 
//序列化对象 
var postdata = JSON.stringify(dtb); 
//异步请求 
$.post(url, { json: postdata }, function(json) { 
createTable(json); 
}, "json") 
}); 
}); 
//生成DataTable对象 
function generateDtb() { 
var dtb = new Array(); 
for (var i = 0; i < 10; i++) { 
var row = new Object(); 
row.col1 = i; 
row.col2 = i % 2 == 0 ? true : false; 
row.col3 = i + "he\nll\"ow"; 
dtb.push(row); 
} 
return dtb; 
} 
//显示Json中的数据 
function createTable(json) { 
var table = $("<table border='1'></table>"); 
for (var i = 0; i < json.length; i++) { 
o1 = json[i]; 
var row = $("<tr></tr>"); 
for (key in o1) { 
var td = $("<td></td>"); 
td.text(o1[key].toString()); 
td.appendTo(row); 
} 
row.appendTo(table); 
} 
table.appendTo($("#back")); 
} 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<input id="botton1" type="button" value="button" /> 
<div id="back"> 
</div> 
</div> 
</form> 
</body> 
</html>

后台代码:
/// <summary>
/// 页面加载时 
/// </summary> 
/// <param name="sender"></param> 
/// <param name="e"></param> 
protected void Page_Load(object sender, EventArgs e) 
{ 
//判断是否异步请求 
if (Request.QueryString["ajax"] == "1") 
{ 
ProcessRequest(); 
} 
} 
/// <summary> 
/// 处理异步请求 
/// </summary> 
private void ProcessRequest() 
{ 
Response.ContentType = "text/html"; 
string json = Request.Form["json"]; 
//反序列化DataTable 
DataTable newdtb = Json2Dtb(json); 
//序列化DataTable为JSON 
string back = Dtb2Json(newdtb); 
Response.Write(back); 
Response.End(); 
} 
/// <summary> 
/// DataTable转Json 
/// </summary> 
/// <param name="dtb"></param> 
/// <returns></returns> 
private string Dtb2Json(DataTable dtb) 
{ 
JavaScriptSerializer jss = new JavaScriptSerializer(); 
ArrayList dic = new ArrayList(); 
foreach (DataRow row in dtb.Rows) 
{ 
Dictionary<string, object> drow = new Dictionary<string, object>(); 
foreach (DataColumn col in dtb.Columns) 
{ 
drow.Add(col.ColumnName, row[col.ColumnName]); 
} 
dic.Add(drow); 
} 
return jss.Serialize(dic); 
} 
/// <summary> 
/// Json转DataTable 
/// </summary> 
/// <param name="json"></param> 
/// <returns></returns> 
private DataTable Json2Dtb(string json) 
{ 
JavaScriptSerializer jss = new JavaScriptSerializer(); 
ArrayList dic = jss.Deserialize<ArrayList>(json); 
DataTable dtb = new DataTable(); 
if (dic.Count > 0) 
{ 
foreach (Dictionary<string, object> drow in dic) 
{ 
if (dtb.Columns.Count == 0) 
{ 
foreach (string key in drow.Keys) 
{ 
dtb.Columns.Add(key, drow[key].GetType()); 
} 
} 
DataRow row = dtb.NewRow(); 
foreach (string key in drow.Keys) 
{ 
row[key] = drow[key]; 
} 
dtb.Rows.Add(row); 
} 
} 
return dtb; 
}

再附一个下载文件,觉得有用的可以下载看看
json.zip
Javascript 相关文章推荐
javascript实现颜色渐变的方法
Oct 30 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
Feb 13 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
Jul 02 Javascript
Web表单提交之disabled问题js解决方法
Jan 13 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
Sep 26 Javascript
JS实现的仿淘宝交易倒计时效果
Nov 27 Javascript
简单解析JavaScript中的__proto__属性
May 10 Javascript
jQuery实现的背景颜色渐变动画效果示例
Mar 24 jQuery
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
Dec 07 Javascript
React Hooks的深入理解与使用
Nov 12 Javascript
微信小程序实现搜索指定景点周边美食、酒店
May 18 Javascript
Vue打包后访问静态资源路径问题
Nov 08 Javascript
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
Sep 12 #Javascript
jQuery EasyUI 的EasyLoader功能介绍
Sep 12 #Javascript
jQuery UI 应用不同Theme的办法
Sep 12 #Javascript
基于jquery的表格排序
Sep 11 #Javascript
javascript多种数据类型表格排序代码分析
Sep 11 #Javascript
javascript 触发HTML元素绑定的函数
Sep 11 #Javascript
Js组件的一些写法
Sep 10 #Javascript
You might like
PHP中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python中__call__用法实例
2014/08/29 Python
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
python生成密码字典的方法
2018/07/06 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
《问银河》教学反思
2014/02/19 职场文书
人力资源作业细则
2014/03/03 职场文书
护士毕业实习感言
2014/03/05 职场文书
读群众路线心得体会
2014/03/07 职场文书
古汉语文学求职信范文
2014/03/16 职场文书
2014年个人委托书范本
2014/10/13 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
教师听课评语大全
2014/12/31 职场文书
武当山导游词
2015/02/03 职场文书
2015年科普工作总结
2015/07/23 职场文书
社区结对共建协议书
2016/03/23 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript