我正在创建一个 jquery 插件。我正在使用一些全局变量
$.rmtableparams.recordsCount: 0
就是其中之一。
我从 ajax 调用内的一个函数分配了一些值。
callAjax = function (surl, pselector, pi, rec) {
$.ajax({
..
success: function (data) {
$.rmtableparams.recordsCount =10;
}
});
}
但是当我尝试在其他函数中访问 $.rmtableparams.recordsCount
时,它返回 0。但奇怪的是,如果 我在该
。 之前发出任何警报
>它将正确返回 10
即:如果我的脚本是
alert("hi");
alert($.rmtableparams.recordsCount);
第二个警报将显示 10
但如果只有 alert($.rmtableparams.recordsCount);
存在,则返回 0
我对此感到好奇。如果有人知道原因请帮助我。
最佳答案
赋值 $.rmtableparams.recordsCount =10;
位于 $.ajax
请求的 success
回调内部。因此,在 ajax 调用完成并收到响应之前,不会分配该值。这种情况发生得相当快,因此当您第一次 alert
等待关闭时,就会收到 ajax 响应,并处理分配。然后,第二个警报显示新值。
如果您忽略第一个警报,则调用仍在处理中,并且 $.rmtableparams.recordsCount
值尚未更改。
就这么简单:AJAX 代表异步 JavaScript 和 XML。异步是关键,但经常被忽视......
关于javascript - jQuery 插件中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17669575/