javascript - 如何用 http 请求的响应填充数组?
问题描述
我想用一些被 http 请求捕获的对象填充一个 JavaScript 数组。不幸的是,我不知道应该使用哪个 ArrayMethod。我尝试了 splice(),但它似乎不接受变量(用于 http 输出)作为输入。有没有人有一些技巧或知道怎么做?
在我的代码示例中,我想用内容填充数组,如“id01”所示。
谢谢你的帮助!
<html>
<body>
<div id="id01"></div>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "https://waterfallexpress2020.s3.eu-central-1.amazonaws.com/myTutorial.txt";
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var myArr = JSON.parse(this.responseText);
myFunction(myArr);
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
function myFunction(arr) {
var out = "";
var i;
for(i = 0; i < arr.length; i++) {
out += '<a href="' + arr[i].url + '">' +
arr[i].display + '</a><br>';
}
document.getElementById("id01").innerHTML = out;
return out;
}
var test =[];
test.splice(0,0,myFunction); //DOESN'T FILL MY ARRAY WITH THE OUTPUT OF myFunction()
document.write(test);
</script>
解决方案
您发出了异步请求,因此您必须等待响应。您使用 xmlhttp 请求和语句完成了它myFunction(myArr)
。因此,为了保持这个返回响应,您应该在请求之前启动变量并用响应填充它:
var test;
...
xmlhttp.onreadystatechange = function()
...
test = myFunction(myArr);
...
document.write(test);
小心拼接,它会创建初始变量的新实例,并且会丢失 getter 和 setter。
推荐阅读
- java - 如何检查用户在android中使用intent创建的卸载对话框点击了什么?
- excel - 查找上方单元格的值
- nativescript - 目标入口点“chart-directives”中的错误缺少依赖项:-./../
- python - pandas,python中的数据解析
- c++ - 重写的函数没有反映在基类中,这是正常行为吗?
- javascript - 如何让一组 div 沿着屏幕移动。反应
- c++ - 监控分配的内存量
- php - 我怎样才能被重定向到管理面板旅行而不是网站的主页?
- node.js - 假路径文件上传和检索
- c++ - “void (Test::*)()”类型的值不能分配给“void (*)()”类型的实体