使用自定义函数作为另一个函数的参数
Using custom function as parameter for another
我目前正在处理重构我的代码,并尝试自动化AJAX请求,如下所示:
目标是有一个独立于上下文的函数来启动AJAX请求。根据上下文对收集的数据进行不同的处理。这是我的功能
function ajaxParameter(routeName, method, array, callback){
//Ajax request on silex route
var URL = routeName;
$.ajax({
type: method,
url: URL,
beforeSend: function(){
DOM.spinner.fadeIn('fast');
},
})
.done(function(response) {
DOM.spinner.fadeOut('fast');
callback(response);
})
.fail(function(error){
var response = [];
response.status = 0;
response.message = "Request failed, error : "+error;
callback(response);
})
}
我的问题主要来自于我的回调函数没有定义。我想这样调用函数(示例)
ajaxParameter(URL_base, 'POST', dataBase, function(response){
if(response.status == 1 ){
console.log('Request succeeded');
}
showMessage(response);
});
我想将响应返回到一个变量,稍后再处理它,但如果请求失败或很慢,这将不起作用(因为响应将没有设置)。
这个版本将使我受益于.done()
和.fail()
。
编辑:所以没有错误,我改变了我的代码一点。目标是能够处理在.done()
和.fail()
上下文中使用的回调函数(两个单独的函数也可以在我的情况下工作)。
据我所知,你的脚本真的没有什么问题。我在这里稍微整理了一下,但它本质上是你之前的东西:
function ajaxParameter (url, method, data, callback) {
$.ajax({
type: method,
url: url,
data: data,
beforeSend: function(){
DOM.spinner.fadeIn('fast');
}
})
.done( function (response) {
DOM.spinner.fadeOut('fast');
if (callback)
callback(response);
})
.fail( function (error){
var response = [];
response.status = 0;
response.message = "Request failed, error : " + error;
if (callback)
callback(response);
});
}
现在我们在JSFiddle上测试一下
如您所见(使用JSFiddle AJAX API),它可以工作。所以问题可能是与其他东西在你的脚本。你确定你在这里发布的脚本与你在开发环境中使用的脚本相同吗?关于你的错误;一定要确保以正确的顺序将正确的参数传递给ajaxParameter
函数。这是我在小提琴中传递的内容:
- url端点(例如http://example.com/)
- 方法(例如'post')
- 一些数据(例如{foo:'bar'})
- 回调(例如function(response){};)
你的意思是这样吗,传递成功和失败回调:
function ajaxParameter(routeName, method, array, success, failure) {
//Ajax request on silex route
var URL = routeName;
$.ajax({
type: method,
url: URL,
beforeSend: function () {
DOM.spinner.fadeIn('fast');
}
}).done(function (response) {
DOM.spinner.fadeOut('fast');
success(response);
}).fail(function (error) {
var response = [];
response.status = 0;
response.message = "Request failed, error : " + error;
failure(response);
})
}
被称为:
ajaxParameter(
URL_base,
'POST',
dataBase,
function(response){
//success function
},
function(response){
// fail function
}
);
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 为什么不'我们在javascript中使用函数参数的数据类型
- 使用闭包共享构造函数参数
- 函数参数的值错误
- 当一个重要的构造函数参数丢失时应该发生什么
- 阻止ReSharper将JavaScript函数参数放到新行中
- 根据函数参数将CSS值存储在var中,然后对其进行操作
- 使构造函数参数具有ES6类方法的特权
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- Windows.Networking.EndpointPair构造函数参数
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- 大括号中的Javascript函数参数
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 将JSON字符串转换为函数参数
- eval()读取函数参数有多糟糕
- Javascript不能在一个命令中使用函数参数
- 函数参数在内部不可见,返回新的Promise(函数(resolve,reject).传递给被promise化的函数的
- ES6类构造函数参数
- 是否可以在javascript函数参数列表中调用多个函数