在我的代码中,我尝试使用AJAX来获取模板文件的内容并将其作为字符串返回,我发出提醒。结果为undefined
,但如果我return xmlhttp.responseText
代替alert(xmlhttp.responseText)
,我会得到我想要的结果。
我可以将AJAX内容作为函数外的字符串返回吗?
alert(getFile());
function getFile() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function stateChanged() {
if (xmlhttp.readyState == 4)
return xmlhttp.responseText;
}
xmlhttp.open("POST","/template.html", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();
}
答案 0 :(得分:1)
否:要做你想做的事,你需要接受getFile
函数中的回调并调用它:
function getFile(callback) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function stateChanged() {
if (xmlhttp.readyState == 4)
callback(xmlhttp.responseText);
}
xmlhttp.open("POST","/template.html", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();
}
getFile(alert);
答案 1 :(得分:1)
XMLHttpRequest是异步的。您应该使用如下所示的回调
getFile(alert);
function getFile(callback) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function stateChanged() {
if (xmlhttp.readyState == 4)
callback(xmlhttp.responseText);
}
xmlhttp.open("POST","/template.html", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();
}