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 相关文章推荐
JS中Iframe之间传值及子页面与父页面应用
Mar 11 Javascript
js构造函数、索引数组和属性的实现方式和使用
Nov 16 Javascript
js实现索引图片切换效果
Nov 21 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
Dec 10 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
Jul 07 Javascript
js实现数字递增特效【仿支付宝我的财富】
May 05 Javascript
Three.js实现浏览器变动时进行自适应的方法
Sep 26 Javascript
认识jQuery的Promise的具体使用方法
Oct 10 jQuery
vue.js移动数组位置,同时更新视图的方法
Mar 08 Javascript
从0到1构建vueSSR项目之路由的构建
Mar 07 Javascript
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 Vue.js
实现AJAX异步调用和局部刷新的基本步骤
Mar 17 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
smarty的保留变量问题
2008/10/23 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
python实现矩阵乘法的方法
2015/06/28 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
村捐赠仪式答谢词
2014/01/21 职场文书
最新奶茶店创业计划书
2014/01/25 职场文书
本科生就业推荐信
2014/05/19 职场文书
食品工程专业求职信
2014/06/15 职场文书
药剂专业毕业生求职信
2014/06/24 职场文书
雷锋的观后感
2015/06/10 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书
2016三八妇女节校园广播稿
2015/12/17 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
react antd实现动态增减表单
2021/06/03 Javascript
python playwright 自动等待和断言详解
2021/11/27 Python
Python中的tkinter库简单案例详解
2022/01/22 Python
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js