基本上我有
correctData = false//global variable
function calledFirst()
{
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
proceedDiv.innerHTML = xmlhttp.responseText
if(xmlhttp.responseText == "You may continue.")
correctData = true
else
correctData = false
}
}
xmlhttp.open("GET", "process.php?proposed="+encodeURIComponent(mon2),true);
xmlhttp.send()
calledSecond()
}
function calledSecond()
{
if(!correctData)
{
//uh-oh
看起来 usedSecond()
在 Ajax 响应完成之前被调用,这是一个问题,因为 CorrectData
的值取决于 Ajax 响应,而 calleSecond 使用它。我该如何解决这个问题?
更新:每个人都是对的,如果我将函数调用放在回调部分,它就会起作用,但为什么它会起作用?您只是让我相信它不起作用,因为 Ajax 是异步的,因此其余代码不会等待 Ajax 完成,那么为什么要将其移至回调部分来修复此问题?
最佳答案
这就是 AJAX
是异步的原因。编译器不会等待 AJAX 调用完成,就会编译页面的其余部分。
如果你希望第二次调用 CalledSecond(),你必须将其放入回调函数中。
关于javascript - 代码执行是否等待Ajax响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602550/