我想知道怎么拿到XMLHttpRequest的值

test:function(){
var name=“小红”;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 400)) {
var response = xhr.responseText;
console.log(response);//这里打印值正常
name=response;
//name=“123”;
}

    };

    xhr.open("GET", "http://192.168.0.103/GetAllProducts1?id=1", false);
    xhr.send();

    return name;
},


start(){
      var dd=this.test();

        console.log(dd);//打印还是“小红”
},

我获取不到XMLHttpRequest返回到值,求解。原生Javascript可以拿到值。我是新手我是新手我是新手,重要到事情说三遍

还是老老实实写回调吧

RETURN 当然拿不到。。。
这个是异步的。

xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 400)) {
var response = xhr.responseText;
console.log(response);//这里打印值正常 #你找到对方了 就是这里才拿到返回值的
name=response;
//name=“123”;
}

大哥,真的回调函数就可以了。没搞懂,一脸懵逼,js是真绕

这是异步的,在 var dd=this.test(); 里面还没有修改值,就执行了 console.log(dd);

其实跟异步同步没关系,跟this有关系,js的this真的太绕了,谁调用的它 this就是谁。之所以得不到值是因为name=“小红”和name=response 不是同一个 name

其实跟异步同步没关系,跟this有关系,js的this真的太绕了,谁调用的它 this就是谁。之所以得不到值是因为name=“小红”和name=response 不是同一个 name。。。。。我想知道每次都要注意this不是也太麻烦了。用回调的话是不是每次都要把自己穿进去?真的好恼火

用什么语法 指定name=response;是外面的name??因为在里面写的name=response就成了XMLHttpRequest对象的name了 而不是name="小红"哪个变量,所以这里赋值是不行的。。。大哥们求解,求代码

你的理解能力真行[quote=“tbtry, post:8, topic:63135”]
因为在里面写的name=response就成了XMLHttpRequest对象的name了 而不是name="小红"哪个变量
[/quote]

实在看不下去了,你这是一本正经的胡说八道,给你代码,自己体会下同步和异步的机制把。
test:function(cb){
var name=“小红”;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 300)) {
var response = xhr.responseText;
console.log(response);//这里打印值正常
name=response;
//name=“123”;
cb && cb(name)
}
};
xhr.open(“GET”, “http://192.168.0.103/GetAllProducts1?id=1”, false);
xhr.send();
return name;
},

start(){
this.test(function(dd){
console.log(dd);//
});
}

哈哈,初学者,我现在都看不下去 自己的胡说八道