在javascript responseText中将临时变量声明为全局变量

Declaring a temporary variable into a global variable in javascript responseText

本文关键字:变量 声明 全局变量 javascript responseText      更新时间:2023-09-26

我正试图将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);

感谢任何能在这个问题上提供帮助的人。

您正在启动一个异步请求。进程功能执行后,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();

您在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);
}

同步调用通常不是一个好的做法。也许jQuery是你可以使用的东西?

示例:

$.ajax({
  url: "http://www.example.com/example.html",
  success: function(data) {
    // now you can do something with the data
    alert(data);
  }
});