我正在尝试等待 AJAX 请求完成。如果方法 xmlhttp.open
支持 async = false
就很容易了,但是 Ant Galio 不支持这个选项并且只允许异步请求。问题是我如何等待回调被调用。
var ajaxFinished = false;
var xmlhttp = new XMLHttpRequest();
this.debug("-- onreadystatechange is being defined");
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
ajaxFinished = true;
var data = xmlhttp.responseText;
if (xmlhttp.status == 200) {
that.debug('downloadSettings: SUCCESS');
[...]
} else {
that.debug('downloadSettings:');
that.debug('-- Error: ');
that.debug('-- ResponseText: "'+data+'"')
}
}
}
while (ajaxFinished == false) {
}
this.debug("-- open connection");
xmlhttp.open("GET", requestUrl, true); /* Ant Galio does not support synchronous */
this.debug("-- send");
xmlhttp.send();
我正在寻找某种主动等待。我知道另一种解决方案,但我对不需要更改比我上面的示例更多代码的解决方案感兴趣。
谢谢!
最佳答案
是的,你可以
function getFile(url) {
if (window.XMLHttpRequest) {
AJAX=new XMLHttpRequest();
} else {
AJAX=new ActiveXObject("Microsoft.XMLHTTP");
}
if (AJAX) {
AJAX.open("GET", url, false);
AJAX.send(null);
return AJAX.responseText;
} else {
return false;
}
}
var fileFromServer = getFile('http://somedomain.com/somefile.txt');
w3c 定义 http://www.w3.org/TR/XMLHttpRequest/#the-open()-method
client . open(method, url [, async = true [, user = null [, password = null]]])
关于javascript - 当同步选项不可用时,如何等待 ajax 请求在 javascript 中完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11759493/