我有一个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}}参数的用途是什么?
请解释
答案 0 :(得分:0)
参数success
和error
是回调函数(与您决定称之为“回调”的参数相同),当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)
正如其他人所说,所有三个成功,错误和回调都应该是函数。但是,它们有不同的目的:
换句话说,调用triggerUpload不会提交表单。您只需将处理程序附加到文件输入按钮即可。一旦你改变它,即你选择一个文件,表格就会被提交,之后你会收到回复。