当我将错误函数作为函数中的对象参数传递时,我无法调用错误回调。但是,当我在ajax代码中声明它时,它可以工作。
var ajaxSettings = new Object();
ajaxSettings.error = function(request, status, error){ console.log('bad failure');};
ajaxSettings.success = function(result) { console.log('good success');};
uploadFile(contents, ajaxSettings)
function uploadFile(contents, settings) {
$.ajax({
url: uri,
type: "PUT",
data: contents,
processData: false,
dataType: "json",
success: settings.success,
error: settings.error
});
}
在这种情况下,错误回调不会被触发。但是,如果我在ajax代码中编写错误函数声明,它就可以工作。
function uploadFile (contents, settings) {
$.ajax({
url: uri,
type: "PUT",
data: contents,
processData: false,
dataType: "json",
success: settings.success,
error: function(request, status, error) { console.log('bad failure'); },
});
}
我也试过制作success: settings.error
,它会在成功时调用该函数。错误回调未被调用的原因是什么?
答案 0 :(得分:0)
我使用您的代码创建了一个小提琴,请检查Fiddle
您应该在使用之前初始化ajaxSettings
答案 1 :(得分:0)
尝试声明如下所示的回调:
var ajaxSettings = {}
ajaxSettings.error = function(request, status, error){ console.log('bad failure');};
ajaxSettings.success = function(result) { console.log('good success');};
...因为它们可能在“uploadFile”函数范围内不可见。