为什么将参数分配给回调?

时间:2013-09-25 05:39:08

标签: javascript ajax jquery

我有一个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 success }作为可选项。

注意:这些方法是由其他人编码的,我无法清楚地得到它们。我是javascript的新手。

我的问题是:我只向该函数传递一个参数。人们会认为这个论点会被分配给success。如何/为什么将其分配给回调?这些error,{{1}}参数的用途是什么?

请解释

2 个答案:

答案 0 :(得分:0)

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

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

如果将参数分配给success而不是callback,则可以100%正确。


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

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

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

  

成功

     

表单完成后要调用的回调函数   提交。如果提供了“成功”回调函数,则调用它   从服务器返回响应后。它通过了   以下论点:

     

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

     

2。)statusText

     

3。)xhr(或jQuery包装的表单元素,如果使用jQuery&lt; 1.4)

     

4.。)jQuery包装的表单元素(如果使用jQuery&lt; 1.4,则为undefined)

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

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

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

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

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

答案 1 :(得分:0)

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

  • 成功 - 在ajax提交成功完成后调用
  • 错误 - 在ajax提交中出现错误时调用
  • 回调 - 无论提交的内容是什么,都会调用。我想这只是为了确认更改处理程序已分配给输入字段而添加。

换句话说,调用triggerUpload不会提交表单。您只需将处理程序附加到文件输入按钮即可。一旦你改变它,即你选择一个文件,表格就会被提交,之后你会收到回复。