0

我有一个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参数在这里是干什么用的?

请解释

4

2 回答 2

0

参数successerror是回调函数(与您决定调用“回调”的参数相同),当ajaxSubmit方法成功传输表单数据或遇到错误时执行。

因此,在您的函数调用中,您提供了success回调,但没有提供error回调或callback回调。由于您的函数被执行,因此可以假设该ajaxSubmit操作已成功提交表单。

认为参数分配给success而不是分配给 100% 正确callback


此处提供 jQuery 表单插件的完整文档:http: //malsup.com/jquery/form/

在这里:https ://github.com/malsup/form

具体来说,success回调的文档说明:

成功

表单提交后调用的回调函数。如果提供了“成功”回调函数,则在从服务器返回响应后调用它。它传递了以下参数:

1.) responseText 或 responseXML 值(取决于 dataType 选项的值)。

2.) 状态文本

3.) xhr(如果使用 jQuery < 1.4,则为 jQuery 包装的表单元素)

4.) jQuery 包装的表单元素(如果使用 jQuery < 1.4,则为未定义)

这意味着成功函数的正确原型应该是:

triggerUpload(function(response,status,xhr,form) {
   applyPostAjax(postUrl);
});

尽管提供具有更多或更少参数的函数是完全没问题的,因为 javascript 允许通过比其正式声明中存在的参数更少或更多的参数调用函数。因此,如果您只对上传功能的结果感兴趣,您可以这样做:

triggerUpload(function(response) {
   applyPostAjax(postUrl);
});

或者,如果您不关心服务器的响应,您可以像以前那样调用它。

于 2013-09-25T05:51:05.230 回答
0

正如其他人所说,所有三个成功错误回调都应该是函数。但是,它们有不同的目的:

  • success - 成功完成 ajax 提交后调用
  • error - 一旦在 ajax 提交中出现错误时调用
  • 回调 - 无论提交发生什么情况都会调用。我想这只是为了确认更改处理程序已分配给输入字段。

换句话说,调用 triggerUpload 不会提交表单。您只需将处理程序附加到文件输入按钮。一旦你改变它,即你选择一个文件提交表单,然后你会得到一个响应。

于 2013-09-25T05:57:15.517 回答