我包装了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)显然都不行,如之奈何?求助~~~
$.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,
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函数里面的那些个代码基本是到哪都一样写,
包装起来只是说不用总是去写那些个重复的东西,
使用起来丝毫不影响你要执行什么东西,你只管传过去它需要的东西就好了.
回调函数就是一个通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。
回调函数写法如下:
【方法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;
回调函数代码块
};