我正在尝试从$.ajax.done()
范围内永久更改某些值,以便在此范围之外的代码的其他部分可以使用它。变量duplicate
是我编写的模块中的全局变量,我希望能够在运行done()
后在其他函数中使用更新的布尔值。
函数duplicateFile
设置为返回$.ajax({ url:... });
代码块。
// Callback function
duplicateError = function() {
console.log(duplicate); // prints 'true' if a duplicate is found
if (duplicate) {
errors.create("duplicateFile");
}
};
// AJAX call
duplicateFile(fileData).done(duplicateError);
如果在运行AJAX调用后发现重复,console.log
会打印true
。但如果我尝试在AJAX函数调用之后调用console.log
,如下所示,值为false
,无论如何:
duplicateFile(fileData).done(duplicateError);
console.log(duplicate); // always prints 'false'
有没有办法解决这个问题并在调用请求后让duplicate
值永久更改?我知道我可以在AJAX请求中设置async: false
,但我想避免这种情况。
编辑: duplicate
在传递给success
中的$.ajax({ url:... })
方法的回调函数中发生了变化。