0

外部声明的变量:

var total=0;

on success of AJAX{

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

alert(total)// gives zero value

在这里,我将总值设为 0。

4

2 回答 2

1

您的ajax请求可能是异步的。这意味着您alert发生响应返回之前。

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

于 2012-07-30T23:14:17.833 回答
0

它不清楚实际上是什么问题,但这听起来像是典型的异步混淆。AXMLHttpRequest默认情况下,运行 async 并在遇到事件时触发其回调(例如,readyState 4)。

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

因此,简单的解决方案是将其移动alert()到您.onreadystatechange各自的.onload事件处理程序中,移动到处理success.

最糟糕的解决方案(即使没有人会推荐)是将您的设置XMLHttpRequestsyncronous。这意味着,在请求运行期间,您的浏览器及其 UI 线程被锁定,直到请求完成。

于 2012-07-30T23:15:37.343 回答