我正在创建一个jquery插件。在那我正在使用一些全球变量
$.rmtableparams.recordsCount: 0
就是其中之一。
我从一个函数inside an ajax call
为此分配了一些值。
callAjax = function (surl, pselector, pi, rec) {
$.ajax({
..
success: function (data) {
$.rmtableparams.recordsCount =10;
}
});
}
但是当我尝试在某个其他函数中访问$.rmtableparams.recordsCount
时,它返回0.但奇怪的是,如果i alert anything
之前it will returns 10
正确。{/ p>
即:如果我的脚本是
alert("hi");
alert($.rmtableparams.recordsCount);
第二个警报将显示10
但如果只有alert($.rmtableparams.recordsCount);
,则返回0
我对此感到疑惑。如果有人知道原因请帮助我。
答案 0 :(得分:3)
作业$.rmtableparams.recordsCount =10;
位于success
请求的$.ajax
回调中。因此,在ajax调用完成并收到响应之前,不会分配该值。这种情况发生得相当快,因此当您第一次alert
等待关闭时,会收到ajax响应,并处理分配。然后,第二个警报显示新值。
如果您省略第一个提醒,则仍在处理通话,且$.rmtableparams.recordsCount
值尚未更改。
它就是这么简单:AJAX代表异步JavaScript和XML。异步是关键,但经常被忽视......
答案 1 :(得分:0)
您无法继续设置$.rmtableparams.recordsCount
,因为$.rmtableparams
不存在。
首先需要设置$.rmtableparams
:
$.rmtableparams = {};
然后继续向对象添加数据:
$.rmtableparams.recordsCount = 10;
确保触发成功回调。在回调中添加alert
或console.log
以进行检查。