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 相关文章推荐
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
Jan 03 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
Dec 16 Javascript
使用JavaScript开发IE浏览器本地插件实例
Feb 18 Javascript
Bootstrap每天必学之标签与徽章
Nov 27 Javascript
理解javascript封装
Feb 23 Javascript
Angular.js回顾ng-app和ng-model使用技巧
Apr 26 Javascript
js时间戳和c#时间戳互转方法(推荐)
Feb 15 Javascript
JS按钮闪烁功能的实现代码
Jul 21 Javascript
说说AngularJS中的$parse和$eval的用法
Sep 14 Javascript
Webpack框架核心概念(知识点整理)
Dec 22 Javascript
微信小程序仿RadioGroup改变样式的处理方案
Jul 13 Javascript
javascript使用正则实现去掉字符串前面的所有0
Jul 23 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下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
php文件上传的简单实例
2013/10/19 PHP
Using the TextRange Object
2006/10/14 Javascript
javascript 常用关键字列表集合
2007/12/04 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
pandas计数 value_counts()的使用
2019/06/24 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
python tqdm库的使用
2020/11/30 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
专科毕业生就业推荐信
2013/11/01 职场文书
个人收入证明范本
2014/01/12 职场文书
网络编辑求职信
2014/04/30 职场文书
竞聘自述材料
2014/08/25 职场文书
高中运动会广播稿
2014/09/16 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
Oracle 多表查询基本语法实例
2022/04/18 Oracle
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js