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 相关文章推荐
IE Firefox 使用自定义标签的区别
Oct 15 Javascript
JS代码放在head和body中的区别分析
Dec 01 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
Dec 08 Javascript
JavaScript函数模式详解
Nov 07 Javascript
js实现发送验证码后的倒计时功能
May 28 Javascript
详解JavaScript中getFullYear()方法的使用
Jun 10 Javascript
Javascript基于AJAX回调函数传递参数实例分析
Dec 15 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
Apr 20 Javascript
Bootstrap 模态框(Modal)带参数传值实例
Aug 20 Javascript
vue.js数据绑定操作详解
Apr 23 Javascript
微信小程序日历弹窗选择器代码实例
May 09 Javascript
node express使用HTML模板的方法示例
Aug 22 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结合飞信 免费天气预报短信
2009/05/07 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
PDO::errorInfo讲解
2019/01/28 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
javascript instanceof 内部机制探析
2010/10/15 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
用Node写一条配置环境的指令
2019/11/14 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
python控制台英汉汉英电子词典
2020/04/23 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
Python中你应该知道的一些内置函数
2017/03/31 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
单位工作证明书格式
2014/10/04 职场文书
在职证明格式样本
2015/06/15 职场文书
校园开放日新闻稿
2015/07/17 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
学习心得体会
2019/06/20 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
Python使用MapReduce进行简单的销售统计
2022/04/22 Python
使用MybatisPlus打印sql语句
2022/04/22 SQL Server