jQuery Tips 为AJAX回调函数传递额外参数的方法


Posted in Javascript onDecember 28, 2010

具体到这个例子,我们希望button1和button2点击之后,用AJAX的方式取example.html的内容,然后动态更新页面的id=callbackdemo3的div
HTML如下:

<div id="callbackdemo1"> 
<button id="button1">ajax load1</button><br/> 
</div> 
<div id="callbackdemo2"> 
<button id="button2">ajax load2</button><br/> 
</div> 
<div id="callbackdemo3" class="log"></div> 
<button onclick="$('.log').html('');">clear</button>

第一种做法:
适用于最简单的情况,也是比较直观的做法,就是在ajax回调函数中,使用jQuery的id选择器$(“#callbackdemo3″)得到id为callbackdemo3的div后更新其HTML内容
$("#callbackdemo1>#button1").click( 
function load(){ 
$.get("example.html",{ 'param[]': ["var1", "var2"] }, 
function f1(data, textStatus, XMLHttpRequest) 
{ 
$("#callbackdemo3").html(data); 
} 
); 
} 
);

第二种做法:
定义好一个接受额外参数的回调函数,然后在默认回调函数的内容调用这个预先定义好的回调函数
这样就能达到传递额外参数的目的了,较之第一种方法,此方法能比较方便的利用各个回调函数的上下文。
function callback_with_extraParam(data,param) 
{ 
param.html(data); 
} 
$("#callbackdemo2>#button2").click( 
function load(){ 
var extraParam = $("#callbackdemo3") 
$.get("example.html",{ 'param[]': ["var1", "var2"] }, 
function f2(data) 
{ 
callback_with_extraParam(data,extraParam); 
} 
); 
} 
);

对于额外参数的重要性,不妨看一个稍微复杂一点点的HTML情况,我们希望更新button3下面的那个div的HTML,这个div没有id,那么如何做呢?
<div id="callback_complexdemo"> 
<button id="button3">ajax load3</button><br/> 
<button onclick="$('div',$(this).closest('div')).html('');">clear</button><br/> 
<div></div> 
</div>

当然使用#callback_complexdemo>div也是可以的,但是如果是更加复杂的HTML页面呢?如果没有id=callback_complexdemo呢?嵌套很深呢?
这种情况下,我们就需要有效利用上下文参数这个特性了。
在click的事件处理函数load()中,我们可以方便的获得当前元素的位置var whereAmI = $(this);
这个whereAmI是个jQuery对象,然后在AJAX回调函数f3中,我们利用whereAmI即被点中的这个button想办法去获得想要的div
这一行代码新手有的人看不懂:$('div',$(whereAmI).closest('div'))
首先$closest_parent_div = $(whereAmI).closest('div')即查询获得whereAmI最近的父div对象
然后$('div',$closest_parent_div) 即在最近的父div对象这个上下文中,查找内部的div对象
$("#callback_complexdemo>#button3").click( 
function load(){ 
var whereAmI = $(this); 
$.get("example.html",{ 'param[]': ["var1", "var2"] }, 
function f3(data) 
{ 
console.log(whereAmI); 
$('div',$(whereAmI).closest('div')).html(data); 
} 
); 
} 
);

希望通过这个小例子,能让大家学会如何给AJAX回调函数传递额外参数,以及实用且重要的上下文参数。
Javascript 相关文章推荐
从javascript语言本身谈项目实战
Dec 27 Javascript
JavaScript进阶教程(第四课第一部分)
Apr 05 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
Oct 31 Javascript
关于JavaScript中原型继承中的一点思考
Jul 25 Javascript
JQuery 图片的展开和伸缩实例讲解
Apr 18 Javascript
jQuery客户端分页实例代码
Nov 18 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
Feb 17 Javascript
详解js中的apply与call的用法
Jul 30 Javascript
EasyUI学习之Combobox级联下拉列表(2)
Dec 29 Javascript
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
基于JavaScript实现幸运抽奖页面
Jul 05 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
Nov 05 Javascript
JavaScript去掉空格的方法集合
Dec 28 #Javascript
js常用排序实现代码
Dec 28 #Javascript
深入理解Javascript闭包 新手版
Dec 28 #Javascript
prettify 代码高亮着色器google出品
Dec 28 #Javascript
Pro JavaScript Techniques学习笔记
Dec 28 #Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
Dec 28 #Javascript
JavaScript动态调整TextArea高度的代码
Dec 28 #Javascript
You might like
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
js 操作符实例代码
2009/10/24 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
javascript获取xml节点的最大值(实现代码)
2013/12/11 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
three.js 入门案例详解
2018/01/23 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
Python多线程爬虫简单示例
2016/03/04 Python
Python实现图片转字符画的示例
2017/08/22 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
Python Logging 日志记录入门学习
2018/06/02 Python
python3获取当前目录的实现方法
2019/07/29 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
国际政治个人自荐信范文
2013/11/26 职场文书
数控专业自荐书范文
2014/03/16 职场文书
事业单位个人总结
2015/02/12 职场文书
装饰施工员岗位职责
2015/04/11 职场文书