Extjs变量作用域

一下是我外部js的代码 我申明了全局变量global_json,在下面的alert中输出的值是实际得到的callBack.responseText值,而我在页面上用document.write(global_json),得到的却是global_json的初始值1,为什么呢?

global_json=1;
Ext.onReady(
function(){
Ext.Ajax.request({
method:'POST',
url:"/myOffice/admin!getNewMessageCount.action",
success:function(callBack){
global_json=callBack.responseText;
alert(global_json);
},
failure: function(callBack){
alert("用户部分信息加载失败!");
}
}
)
})

[quote]
我加了一个定时器,每一秒请求一次,这样一来只要用户一登陆系统,就不断的想服务器发送请求,能不能让程序监视数据库的变化,只要摸个表有改变,就让他请求,否则什么也不做
[/quote]
这就是我上面说的服务器端推技术啊,就是服务器主动向客户端发送数据,不过这个技术在服务器上还没普遍实现。所以现在多采用轮询,就是客户端定时发送请求,这个弊端就是可能服务器端数据根本没变化,但也要发一个请求过去,很浪费。

看你document.write(global_json) 写在什么位置了,这里ajax是异步请求,success的回调方法要在请求后才会执行,success回调方法执行前,调用global_json肯定是原来的初始值

[quote]
你好,我的document.write(global_json)是写在body之中的
[/quote]
写在这里的话,这句JS就顺序执行了,因为它执行时,你的回调方法还没有返回,即它先执行了。你可以把[code="javascript"]
document.write(global_json)
[/code]
放到回调函数中再看结果是不是你想要的。

所以了,原因很清楚了。

[quote]
在页面就输出了一个空白的页面上面显示了一个值,而不是只显示值了
[/quote]
不明白你说的是什么意思?

[quote]
我现在想让这个请求时时刻刻的执行,就是想达到即时向页面反馈数据库中的数据 无刷新
[/quote]
这个目前来说只能采用轮询或长轮询,当然,如何服务器支持服务器端Push最好,不过目前还不行,像cometD。
现在多采用轮询,但也不能太频繁,服务器受不了。