我正在尝试将xhr.responseText变成一个变量,然后提醒它,但由于一个奇怪的原因,我不能这样做。
test2 = ""
function process(){
url = "http://www.example.com/example.html"
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4){
test2 = xhr.responseText
}
}
xhr.send();
}
process();
alert(test2);
感谢任何可以帮助解决此问题的人。
答案 0 :(得分:1)
您正在触发异步请求。执行过程功能后,将立即触发alert
。稍后当响应返回时,onreadystatechange
被触发。如果您计划对AJAX查询的结果执行任何操作,则应在onreadystatechange
中执行此操作。像这样......
test2 = ""
function process(){
url = "http://www.example.com/example.html"
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4){
test2 = xhr.responseText
alert(test2);
}
}
xhr.send();
}
process();
答案 1 :(得分:0)
你在test2变量填充内容之前发出警告(因为XMLHTTPRequest需要一些额外的时间才能完成)
var test2 = "";
function process(callback){
url = "http://www.example.com/example.html"
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4)
{
test2 = xhr.responseText;
callback();
}
}
xhr.send();
}
process(callbackFunction);
function callbackFunction()
{
alert(test2);
}
答案 2 :(得分:0)
同步通话通常不是一个好习惯。 也许jQuery是你可以使用的东西?
示例:
$.ajax({
url: "http://www.example.com/example.html",
success: function(data) {
// now you can do something with the data
alert(data);
}
});