jQuery插件中的全局变量

时间:2013-07-16 06:34:33

标签: javascript jquery jquery-plugins global-variables

我正在创建一个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

我对此感到疑惑。如果有人知道原因请帮助我。

2 个答案:

答案 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;

确保触发成功回调。在回调中添加alertconsole.log以进行检查。