外部声明的变量:
var total=0;
on success of AJAX{
total++;
alert(total);// gives value
}
alert(total)// gives zero value
在这里,我将总值设为 0。
外部声明的变量:
var total=0;
on success of AJAX{
total++;
alert(total);// gives value
}
alert(total)// gives zero value
在这里,我将总值设为 0。
您的ajax
请求可能是异步的。这意味着您alert
发生在响应返回之前。
任何依赖于响应的代码(比如你的警报)都需要放在你的onreadystatechange
处理程序中。
它不清楚实际上是什么问题,但这听起来像是典型的异步混淆。AXMLHttpRequest
默认情况下,运行 async 并在遇到事件时触发其回调(例如,readyState 4)。
因此,您的alert()
语句很可能在您的任何 ajax 处理程序触发之前遇到。
因此,简单的解决方案是将其移动alert()
到您.onreadystatechange
各自的.onload
事件处理程序中,移动到处理success
.
最糟糕的解决方案(即使没有人会推荐)是将您的设置XMLHttpRequest
为syncronous。这意味着,在请求运行期间,您的浏览器及其 UI 线程被锁定,直到请求完成。