我正在创建一个jquery插件。在那我使用了一些全局变量CCD_ 1就是其中之一。
一个函数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
是正确的。
如果我的剧本是
alert("hi");
alert($.rmtableparams.recordsCount);
第二个警报将显示10
但如果只有alert($.rmtableparams.recordsCount);
,则返回0
我对此感到奇怪。如果有人知道原因,请帮帮我。
分配$.rmtableparams.recordsCount =10;
在$.ajax
请求的success
回调中。因此,在ajax调用完成并收到响应之前,不会分配该值。这种情况发生得相当快,所以当您是第一个等待关闭$.rmtableparams.recordsCount: 0
0时,会收到ajax响应,并处理分配。然后,第二个警报显示新值。
如果忽略第一个警报,则呼叫仍在处理中,$.rmtableparams.recordsCount
值尚未更改
就这么简单:AJAX代表异步JavaScript和XML。异步是关键,但经常被忽视。。。
因为$.rmtableparams
不存在,所以不能直接设置$.rmtableparams.recordsCount
。
您首先需要设置$.rmtableparams
:
$.rmtableparams = {};
然后继续向对象添加数据:
$.rmtableparams.recordsCount = 10;
请确保正在触发成功回调。在回调中添加一个alert
或console.log
来进行检查。