javascript的回调函数里如何传递参数

我包装了jQuery的ajax方法functiondoAjax(u,param,callback){$.ajax({type:'POST',url:u,data:para... 我包装了jQuery的ajax方法
function doAjax(u,param,callback){
$.ajax({
type:'POST',
url:u,
data:param,
success:callback
});
}

function showAlert(data){
alert(data);
}

比如这样调用 doAjax("server.php","id=12&type=1",showAlert);
$.ajax 在success后,会返回一个data到showAlert中,显示出来 ,没有问题.
可是,当我想多传一个参数给showAlert时怎么写?
写成doAjax("server.php","id=12&type=1",showAlert("hi",data))、或者把上面的success:callback 写成success:callback(msg,data)显然都不行,如之奈何?求助~~~
展开
 我来答
企鹅的老公
推荐于2018-05-18 · TA获得超过1464个赞
知道小有建树答主
回答量:485
采纳率:40%
帮助的人:325万
展开全部
function doAjax(u,param,callback){
$.ajax({
type:'POST',
url:u,
data:param,
success:callback
});
}

function showAlert(data,test1,test2){

alert(data+" "+test1+" "+test2);
}

window.onload = doAjax("server.php","id=12&type=1",function(data){showAlert(data,3,5)});
执行doAjax的时候,回调函数的调用改一下就可以了。
测试过没问题。
chenweidi232
推荐于2016-06-05 · TA获得超过674个赞
知道小有建树答主
回答量:858
采纳率:50%
帮助的人:400万
展开全部
简单,很多方法都定义了回调函数,回调函数也是函数,就是说不管怎么传,只需要是个函数类型即可。写法如下。
方式1,
doAjax(参数1,参数2,function(request,opts){
callback(request,opts,agrs);
});
function callback(request,opts,args){

};
方式2,
var args=N;
doAjax(参数1,参数2,function(request,opts){
var X=N;
回调函数代码块..
和以上几乎一样,看个人编码方式选择。
});
追问
其实我是为了写一个通用的显示窗口方法,差不多也是这样做的,可是这样一来,包装$.ajax到doAjax中的好处就不是那么明显了.因为回调时要执行的code都写成字符串形式,不好修改,倒不如每个显示窗口的地方 写一个$.ajax清晰.

function doForm(param,selector,code){
doAjax("_ajax/popform.php", param, function(data){
$(selector).html(data);
eval(code);
});
}
追答
封装只是说可以减少一些重复使用的代码,
$.ajax函数里面的那些个代码基本是到哪都一样写,
包装起来只是说不用总是去写那些个重复的东西,
使用起来丝毫不影响你要执行什么东西,你只管传过去它需要的东西就好了.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
何度千寻
2015-10-29 · TA获得超过5899个赞
知道大有可为答主
回答量:1381
采纳率:91%
帮助的人:558万
展开全部

  回调函数就是一个通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。

  回调函数写法如下:

  【方法1】

doAjax(参数1,参数2,function(request,opts){
         callback(request,opts,agrs);
 });
function callback(request,opts,args){
              
};


  【方法2】

var args=N;
doAjax(参数1,参数2,function(request,opts)
{
       var X=N;
       回调函数代码块
};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式