为什么参数分配给回调

Why parameter gets assigned to callback?

本文关键字:回调 分配 参数 为什么      更新时间:2023-09-26

我有一个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。如何/为什么将其分配给回调?这些successerror参数在这里有什么用?

请解释一下

参数

successerror是回调函数(与您决定调用"回调"的参数相同(,当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 提交中出现一些错误,就会调用
  • 回调 - 无论提交发生什么情况,都调用。我想添加它只是为了确认更改处理程序已分配给输入字段。

换句话说,调用触发器上传不会提交表单。您只需将处理程序附加到文件输入按钮即可。一旦你改变了它,即你选择一个文件,提交表格,然后你得到一个回复。