在Javascript 中,特别是在AJAX中,回调函数常常是一个函数名,没有地方放入参数,如下面的AJAX代码,在成功后将调用回调函数callback,但callback是有参数的,如何把参数传进来呢?
株洲ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
var callback = function(p1){
//do something
}
var ajaxSetting = {
url: url,
timeout:me.timeout,
type: method,
contentType: "application/json",
dataType: "json",
cache: false,
async: async,
data: p_data,
success: callback
},
error: function(p_request, p_status, p_err) {
}
};
解决的办法是利用匿名函数:
success: function(result){
callback(p1_actual);
}
其中pa_actual是已知的参数,可以是function类型。
直接submit整个页面都刷新了。
要想有回调函数的话,可以采用异步提交的方法。
如jQuery.json(url,params,function call(data){
//这里写回调处理内容。data是返回的数据
},"json")。
url是提交表单路径。params是提交的表单参数。data是返回的数据,"json"指定返回格式是json,具体的请参考jQuery api
【function】
在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String、Array、Number、Object类的对象一样用于内置对象的管理。因为function实际上是一种对象,它可以“存储在变量中,通过参数传递给(别一个)函数(function),在函数内部创建,从函数中返回结果值”。
因为function是内置对象,我们可以将它作为参数传递给另一个函数,延迟到函数中执行,甚至执行后将它返回。
【回调函数】
回调函数来自一种著名的编程范式——函数式编程,在基本层面上,函数式编程指定的了函数的参数。
回调函数被认为是一种高级函数,一种被作为参数传递给另一个函数(在这称作"otherFunction")的高级函数,回调函数会在otherFunction内被调用(或执行)。回调函数的本质是一种模式(一种解决常见问题的模式),因此回调函数也被称为回调模式。
js在回调函数内,修改外部变量的方法常用async参数。
代码举例如下:
var async = require('async');
function get_time_line() {
var list = []; // List 不能为一个空数组,不然循环个屁啊
var getValue = function(li,oneDone){
// li.key 是你每个数组元素中的参数,你自己改吧
db.hget(li.key, 'time_line', function(err, reply) {
// 存到每个元素里去
li['newValue'] = reply;
// 做好了
oneDone()
});
}
async.each(lists,getValue,function(err,result){
if (!err) {
// 全都抓完了,输出最后有newValue的list
console.log(lists);
// do sth. else
}
});
};
以上是node.js中最常用的修改内部变量的方法。
简单,很多方法都定义了回调函数,回调函数也是函数,就是说不管怎么传,只需要是个函数类型即可。写法如下。
方式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;
回调函数代码块..
和以上几乎一样,看个人编码方式选择。
});
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=12type=1",function(data){showAlert(data,3,5)});
执行doAjax的时候,回调函数的调用改一下就可以了。
测试过没问题。