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