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

我包装了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)显然都不行,如之奈何?求助~~~

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的时候,回调函数的调用改一下就可以了。
测试过没问题。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-05
简单,很多方法都定义了回调函数,回调函数也是函数,就是说不管怎么传,只需要是个函数类型即可。写法如下。
方式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函数里面的那些个代码基本是到哪都一样写,
包装起来只是说不用总是去写那些个重复的东西,
使用起来丝毫不影响你要执行什么东西,你只管传过去它需要的东西就好了.

本回答被提问者采纳
第2个回答  2015-10-29

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

  回调函数写法如下:

  【方法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;
       回调函数代码块
};

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网