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 相关文章推荐
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
Sep 25 Javascript
javascript 无提示关闭窗口脚本
Aug 17 Javascript
jQuery获得字体颜色16位码的方法
Feb 20 Javascript
在页面中输出当前客户端时间javascript实例代码
Mar 02 Javascript
Three.js快速入门教程
Sep 09 Javascript
bootstrap datepicker限定可选时间范围实现方法
Sep 28 Javascript
利用transition实现文字上下抖动的效果
Jan 21 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
Sep 16 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
May 14 jQuery
如何优雅地在Node应用中进行错误异常处理
Nov 25 Javascript
es6 super关键字的理解与应用实例分析
Feb 15 Javascript
vue中的过滤器及其时间格式化问题
Apr 09 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 采集心得技巧
2009/05/15 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
Admin generator, filters and I18n
2011/10/06 PHP
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
JS格式化数字金额用逗号隔开保留两位小数
2013/10/18 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
jquery ztree实现树的搜索功能
2016/02/25 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
python查询mysql中文乱码问题
2014/11/09 Python
django1.8使用表单上传文件的实现方法
2016/11/04 Python
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
2016/10/06 面试题
编辑硕士自荐信范文
2013/11/27 职场文书
syb养殖创业计划书
2014/01/09 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
退学证明范本3篇
2014/10/29 职场文书
2014年司法所工作总结
2014/11/22 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
运动会新闻稿
2015/07/17 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
Python基于百度AI实现抓取表情包
2021/06/27 Python