在此Ajax请求之外,在XMLHttpRequest中修改的变量外部变量和变量值是不可见的

时间:2012-07-30 23:13:28

标签: javascript ajax

外部声明的变量:

var total=0;

on success of AJAX{

total++;
alert(total);// gives value
}

alert(total)// gives zero value

这里我的总值为0。

2 个答案:

答案 0 :(得分:1)

您的ajax请求可能是异步。这意味着您的alert在回复之前发生了

任何依赖于响应(如警报)的代码都需要放在onreadystatechange处理程序中。

答案 1 :(得分:0)

目前还不清楚究竟是什么问题,但这听起来像典型的 asyncronous 混淆。默认情况下,XMLHttpRequest会在遇到事件时触发async及其回调(例如,readyState 4)。

因此,在您的任何ajax处理程序触发之前,很可能会遇到alert()语句。

因此,简单的解决方案是将alert()移动到.onreadystatechange .onload事件处理程序中,移动到处理success的部分的最底部。< / p>

最糟糕的解决方案(即使没有人会建议)是将XMLHttpRequest设置为同步。这意味着,在请求运行的时候,您的浏览器及其UI线程将被锁定,直到请求完成。