【发布时间】:2020-05-07 23:48:43
【问题描述】:
在我在 Firefox 控制台中执行该代码后,我收到一条错误消息,上面写着“ReferenceError: abc is not defined”。我该如何解决它以使其工作? 它看起来像在 IF 结束后,FOR 忘记了变量“abc”的值。该怎么办? 请帮忙
for (i = 0; i < 10; i++) {
if (i == 0 || i == 5) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var str = this.responseText;
var text = str.split('?id = "')[1];
var abc = text.split('";')[0];
}
};
xhttp.open("GET", "http://example.com", true);
xhttp.send();
}
fetch("http://www.example.com/post.php", {
"credentials": "include",
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0",
"Accept": "*/*",
"Accept-Language": "en-US,en;q=0.5",
"Content-Type": "application/x-www-form-urlencoded",
"X-Requested-With": "XMLHttpRequest"
},
"referrer": "http://www.example.com/index.php",
"body": "id=" + abc + "",
"method": "POST",
"mode": "cors"
});
}
【问题讨论】:
-
abc是匿名函数中的局部变量。 -
你为什么同时使用
XMLHttpRequest和fetch()? -
它也是异步运行的,所以即使你修复了变量的作用域,
fetch()运行时也不会分配变量。您需要从回调函数中调用fetch()。 -
因为我不知道如何通过 fetch 获取 URL 响应的内容。所以我为此使用了 xmlhhtprquest。 :(
-
每个使用
fetch()的教程都展示了如何获取响应的内容。
标签: javascript firefox console xmlhttprequest fetch