为什么参数分配给回调
Why parameter gets assigned to callback?
我有一个javascript函数:
function triggerUpload(success, error, callback) {
var options = {
type: 'post',
success: success,
error: error
};
$("input[name=file]").change(function() {
$(this).parent().ajaxSubmit(options);
});
if (callback) {
callback();
}
}
我将其用作:
triggerUpload(function() {
applyPostAjax(postUrl);
});
它适用于:当有人点击一个<a href='#' class="upload"> Upload</a>
时,triggerUpload
事件以applyPostAjax
作为分配给callback
的参数,可以保持null
作为其可选。
注意:这些方法是由其他人编码的,我无法清楚地理解它们。我是javascript的新手。
我的问题是:我只向这个函数传递一个参数。 有人会认为该参数将被分配给success
。如何/为什么将其分配给回调?这些success
、error
参数在这里有什么用?
请解释一下
success
和error
是回调函数(与您决定调用"回调"的参数相同(,当ajaxSubmit
方法成功传输表单数据或遇到错误时执行。
因此,在函数调用中,您提供了success
回调,但没有提供error
回调或callback
回调。由于您的函数已执行,因此可以假设ajaxSubmit
操作已成功提交表单。
认为参数分配给success
而不是分配给callback
是 100% 正确的。
jQuery Forms 插件的完整文档可在此处找到:http://malsup.com/jquery/form/
在这里: https://github.com/malsup/form
具体来说,success
回调的文档指出:
成功
在表单之后要调用的回调函数 提交。如果提供了"成功"回调函数,则会调用该函数 从服务器返回响应后。它通过 以下参数:
1.( 响应文本或响应 XML 值(取决于数据类型选项的值(。
2.( 状态文本
3.( xhr(如果使用 jQuery <1.4,则使用 jQuery 包装的表单元素(
4.( jQuery-wrapped form 元素(如果使用 jQuery <1.4,则未定义(
这意味着成功函数的正确原型应该是:
triggerUpload(function(response,status,xhr,form) {
applyPostAjax(postUrl);
});
尽管为函数提供更多或更少的参数是完全可以的,因为 javascript 允许函数由比其正式声明中存在的参数更少或更多的参数调用。因此,如果您只对上传功能的结果感兴趣,您可以执行以下操作:
triggerUpload(function(response) {
applyPostAjax(postUrl);
});
或者,如果您不关心来自服务器的响应,则可以像以前一样调用它。
正如其他人所说,所有三个成功、错误和回调都应该是函数。但是,它们有不同的目的:
- 成功 - 在 Ajax 提交成功完成后调用
- 错误 - 一旦 Ajax 提交中出现一些错误,就会调用
- 回调 - 无论提交发生什么情况,都调用。我想添加它只是为了确认更改处理程序已分配给输入字段。
换句话说,调用触发器上传不会提交表单。您只需将处理程序附加到文件输入按钮即可。一旦你改变了它,即你选择一个文件,提交表格,然后你得到一个回复。
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 使用Javascript中的回调处理变量分配
- Node.js使变量等待分配,直到回调函数完成
- Node.js,为事件分配回调函数'数据'
- 调用消费方法后,如何在分配回调时执行回调
- jQuery表单处理,如何在回调时重新分配函数
- 为变量分配回调函数
- 我们是否可以安全地从套接字参数的回调中分配对象引用
- 将异步函数及其回调函数分配给单个变量
- 为什么参数分配给回调
- 正在从内部回调中分配变量
- jQuery:$.ajax 成功回调不允许我分配给外部私有变量
- 如何在Mongoose中为变量分配回调返回值
- 对更多元素使用相同的事件回调函数-按周期分配
- 如何使用窗口.Onload函数分配一个验证回调函数
- 我怎么能分配一个回调函数后,我在javascript查询的东西
- 将回调函数分配给变量,并在高阶函数之外调用
- Javascript:将函数分配为回调函数和变量作用域