Jquery之Ajax运用 学习运用篇


Posted in Javascript onSeptember 26, 2011

还是先说一些基础知识:
语法:$.ajax({option})
option表示参数。以key/value形式出现。
常用参数:type:post/get。

 url:发送请求的地址。

 data:{object:object} 发送到服务器的数据,必须为key/value格式。可以设置processData属性,不转换数据格式。

 success:function(msg){} 请求成功后回调函数。

 error:function(msg){} 请求失败后回调函数。

dataType:xml/html/script/json/jsonp 返回的数据类型。
再看实例理解:
1.用Ajax实现无刷新审核功能(点击审核后,LinkButton不可用,并改为已审核)。
界面如下:
Jquery之Ajax运用 学习运用篇
这里数据显示用的是Repeater控件,其中审核按钮为LinkButton服务器控件。

页面Html代码:

<body> 
<form id="form1" runat="server"> 
<div> 
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="Main_List_Table" 
rules="none"> 
<tr class="Main_List_Table_Tr1"> 
<td width="5%"> 
选择 
</td> 
<td width="18%"> 
单号 
</td> 
<td width="15%"> 
状态 
</td> 
<td width="18%"> 
店铺 
</td> 
<td width="18%"> 
购买者 
</td> 
<td width="13%"> 
RMB 
</td> 
<td> 
操作 
</td> 
</tr> 
<asp:Repeater ID="rpt_Review" runat="server"> 
<ItemTemplate> 
<tr onmouseover="this.className='Main_List_Table_Tr_Over'" onmouseout="this.className='Main_List_Table_Tr_Out'"> 
<td> 
<input type="checkbox" id="OrderId_<%#Eval("OrderId") %>" name="OrderId" value="<%#Eval("OrderId") %>" /> 
</td> 
<td> 
<%#Eval("OrderId") %></a> 
</td> 
<td> 
<%# Eval("oState").ToString() %> 
</td> 
<td> 
1号店铺 
</td> 
<td> 
张三 
</td> 
<td> 
100.00 
</td> 
<td> 
<asp:LinkButton ID="lbtn_Audit_eShop_Price" runat="server">审核</asp:LinkButton> 
</td> 
</tr> 
</ItemTemplate> 
</asp:Repeater> 
</table> 
</div> 
<div class="padding_Top10"> 
<label for="sel_All" style="cursor: pointer"> 
<input type="checkbox" name="sel_All" id="sel_All" onclick="selectAll('sel_All', 'OrderId');" />全选/反选</label>   
<input type="button" id="btn_Batch_Review" onclick="return Batch_Review();" value="批量审核" /> 
</div> 
</form> 
</body>

实现代码如下:
a.脚本代码:
function lbtn_Audit_eShop_Price_Command(obj,orderId) 
{ 
if (obj.innerHTML != "审核") return false; 
if (!confirm("确定要审核吗?")) { 
return false; 
} 
$.ajax({ 
type:"post",//Post发送方式 
url:"AjaxTest.aspx",//请求地址为本页面地址 
data:{OrderId:orderId,Action:"Single_Review"},//传入数据为订单号以及Action 
success:(function(msg){ 
if(msg!="") 
{ 
var chkId = "OrderId_"+orderId; 
document.getElementById(chkId).disabled = "disabled"; 
obj.disabled = "disabled"; 
obj.innerHTML = "已审核"; 
} 
}) 
}); 
return false; 
}

b.服务器代码:
根据Action判断事件的执行。
protected void Page_Load(object sender, EventArgs e) 
{ 
Conn.Open(); 
//执行动作 
string Action = CommFun.Get_Safe_Str(Request["Action"]); 
if (!IsPostBack) 
{ 
if (Action == "") 
{ 
rpt_Pro_Order_List_Bind(); 
} 
else if (Action == "Single_Review") //点击审核 
{ 
lbtn_Audit_eShop_Price_Command(); 
} 
else //点击批量审核 
{ 
btn_Batch_Review_eShop_Price(); 
} 
} 
}

Repeater绑定数据后,为LinkButton添加onclick属性,用于执行页面脚本代码。
protected void rpt_Pro_Order_List_Bind() 
{ 
…… 
this.rpt_Review.DataSource = Dt; 
this.rpt_Review.DataBind(); 
for (int i = 0; i < this.rpt_Review.Items.Count; i++) 
{ 
LinkButton lbtn_Audit_eShop_Price = (LinkButton)this.rpt_Review.Items[i].FindControl("lbtn_Audit_eShop_Price"); 
if (Dt.Rows[i]["Audit_eShop_Price"].ToString() == "1") 
{ 
lbtn_Audit_eShop_Price.Enabled = false; 
lbtn_Audit_eShop_Price.Text = "已审核"; 
} 
else 
{ 
lbtn_Audit_eShop_Price.Enabled = true; 
lbtn_Audit_eShop_Price.Attributes.Add("onclick", 
"return lbtn_Audit_eShop_Price_Command(this, '" + Dt.Rows[i]["OrderId"].ToString() + "');"); 
} 
} 
} 
[code] 
2.用Ajax实现无刷新批量审核。 
注意:这里用到的控件必须是Html控件,否则会引起回发。但在Repeater内部服务器控件也可以使用。 
这里只需给input="btton"添加一个onclick属性,直接执行Ajax脚本。 
脚本内容如下: 
[code] 
//批量审核 
function Batch_Review() 
{ 
if(!checkSelItem("OrderId","请选择订单!")) return false; 
if(!confirm("确定要审核吗?")) return false; 
var OrderIds = ""; //记录所有订单号 
var elements = document.getElementsByName("OrderId"); 
for (var m=0; m < elements.length; m++){ 
if(m == elements.length - 1) 
{ 
OrderIds = OrderIds + elements[m].value; 
} 
else 
{ 
OrderIds = OrderIds + elements[m].value + ","; 
} 
} 
var orderIdArr = OrderIds.split(','); 
var newOrderIdStr = ""; 
var j = 0;//记录选择的订单个数 
var position = "";//记录选择的订单位置 
for(var i = 0;i<orderIdArr.length;i++) 
{ 
var chk_Id = "OrderId_"+orderIdArr[i]; 
if($_Id(chk_Id).checked)//记录选中的订单 
{ 
if(i == orderIdArr.length - 1) 
{ 
newOrderIdStr += orderIdArr[i]; 
position += i; 
} 
else 
{ 
newOrderIdStr += orderIdArr[i]+","; 
position += i + ","; 
} 
j++; 
} 
} 
newOrderIdStr = RemoveRightComma(newOrderIdStr);//去除末尾逗号后的订单号 
position = RemoveRightComma(position);//去除末尾逗号后的位置 
$.ajax({ 
type: "POST", 
url: "AjaxTest.aspx", 
data: { Order_Id_Arr: newOrderIdStr, Action: "Batch_Review" }, 
success: function(msg) { 
if (msg != "") { 
for(var k = 0 ;k<j;k++) 
{ 
var newOrderIdArr = newOrderIdStr.split(','); 
var positionArr = position.split(','); 
$_Id("OrderId_"+newOrderIdArr[k]).disabled = "disabled"; 
if(parseInt(positionArr[k])<10) 
{ 
$_Id("rpt_Review_ctl0"+parseInt(positionArr[k])+"_lbtn_Audit_eShop_Price").innerHTML = "已审核"; 
$_Id("rpt_Review_ctl0"+parseInt(positionArr[k])+"_lbtn_Audit_eShop_Price").disabled = "disabled"; 
} 
else 
{ 
$_Id("rpt_Review_ctl"+parseInt(positionArr[k])+"_lbtn_Audit_eShop_Price").innerHTML = "已审核"; 
$_Id("rpt_Review_ctl"+parseInt(positionArr[k])+"_lbtn_Audit_eShop_Price").disabled = "disabled"; 
} 
} 
} 
} 
}) 
return true; 
} 
//去除右边逗号 
function RemoveRightComma(str) 
{ 
if(str == "") return; 
var i; 
for(i = str.length-1;i>=0;i--) 
{ 
//charAt(i)取某一个位置的字符 
if(str.charAt(i) != ",") break; 
} 
//截取字符串,substring(start,stop);返回的结果不包含最后一位 
str = str.substring(0,i+1); 
return str; 
}

至此实例讲解结束。
最后回顾思路:
1.单条审核:在页面初始化时,给审核按钮加上onclick属性,执行页面脚本,单击审核后,后台的page_load事件根据Action选择执行的事件。
2.批量审核: 给批量审核按钮加上onclick属性,执行Ajax脚本,后台的page_load事件同样根据Action选择执行的事件。批量审核按钮必须为Html控件。
Javascript 相关文章推荐
JQuery 确定css方框模型(盒模型Box Model)
Jan 22 Javascript
JavaScript中for..in循环陷阱介绍
Nov 12 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
Jun 05 Javascript
jquery Easyui快速开发总结
Aug 20 Javascript
基于JavaScript实现定时跳转到指定页面
Jan 01 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 Javascript
js实现横向拖拽导航条功能
Feb 17 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
Mar 31 Javascript
webpack vue项目开发环境局域网访问方法
Mar 20 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
如何手动实现es5中的bind方法详解
Dec 07 Javascript
vue实现顶部菜单栏
Nov 08 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
Sep 26 #Javascript
在Windows上安装Node.js模块的方法
Sep 25 #Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 #Javascript
利用JS自动打开页面上链接的实现代码
Sep 25 #Javascript
javascript权威指南 学习笔记之javascript数据类型
Sep 24 #Javascript
最简单的js图片切换效果实现代码
Sep 24 #Javascript
zShowBox 图片放大展示jquery版 兼容性
Sep 24 #Javascript
You might like
初识PHP中的Swoole
2016/04/05 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
php微信开发之关注事件
2018/06/14 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
微信小程序左右滑动切换页面详解及实例代码
2017/02/28 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
Python脚本实现集群检测和管理功能
2015/03/06 Python
将python代码和注释分离的方法
2018/04/21 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
Python实现自动装机功能案例分析
2020/10/22 Python
Eastbay官网:美国最大的运动鞋网络零售商
2016/07/27 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
大学生秋游活动方案
2014/02/17 职场文书
《假如》教学反思
2014/04/17 职场文书
中学生评语大全
2014/04/18 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
会计求职自荐信
2015/03/26 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
小时代观后感
2015/06/10 职场文书