$ .ajax.done()范围之外的值不会更改

时间:2016-04-15 20:09:12

标签: javascript jquery ajax

我正在尝试从$.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:... })方法的回调函数中发生了变化。

0 个答案:

没有答案