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进阶教程(第四课第一部分)
Apr 05 Javascript
js 代码集(学习js的朋友可以看下)
Jul 22 Javascript
js确定对象类型方法
Mar 30 Javascript
使用Java实现简单的server/client回显功能的方法介绍
May 03 Javascript
jquery彩色投票进度条简单实例演示
Jul 23 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
Jun 25 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
Nov 25 Javascript
详解jQuery停止动画——stop()方法的使用
Dec 14 Javascript
js实现拖拽上传图片功能
Aug 01 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
Aug 25 Javascript
JS返回顶部实例代码
Aug 09 Javascript
JS实现简单省市二级联动
Nov 27 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中获取文件扩展名的N种方法小结
2012/02/27 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
详谈PHP编码转换问题
2015/07/28 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
PHP目录操作实例总结
2016/09/27 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
3种Jquery限制文本框只能输入数字字母的方法
2014/12/03 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
Python中的多行注释文档编写风格汇总
2016/06/16 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
使用pandas把某一列的字符值转换为数字的实例
2019/01/29 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
scrapy头部修改的方法详解
2020/12/06 Python
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
2014/07/17 面试题
中文专业毕业生自荐信
2013/10/28 职场文书
会计学个人自荐信模板
2013/12/13 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
骨干教师培训方案
2014/05/06 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
退伍军人感言
2015/08/01 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技