对JSON来说很新。所以阅读w3schools上的一些主题,并尝试在本地执行,但它不起作用。请有人帮我解决这个问题。
注意: 1)将1.html和myTutorials.txt文件保存在同一目录中。 2)我调试了html代码,发现“xmlhttp.status”始终为零。 3)但是w3schools网站上的相同代码工作正常。 链接:
i)http://www.w3schools.com/json/json_http.asp - > 1.HTML
ii)http://www.w3schools.com/json/myTutorials.txt - > myTutorials.txt
<!DOCTYPE html>
<html>
<body>
<div id="id01"></div>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "myTutorials.txt";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var myArr = JSON.parse(xmlhttp.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;
}
</script>
</body>
</html>
[
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.asp"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.asp"
},
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
},
{
"display": "jQuery Tutorial",
"url": "http://www.w3schools.com/jquery/default.asp"
},
{
"display": "JSON Tutorial",
"url": "http://www.w3schools.com/json/default.asp"
},
{
"display": "AJAX Tutorial",
"url": "http://www.w3schools.com/ajax/default.asp"
},
{
"display": "SQL Tutorial",
"url": "http://www.w3schools.com/sql/default.asp"
},
{
"display": "PHP Tutorial",
"url": "http://www.w3schools.com/php/default.asp"
},
{
"display": "XML Tutorial",
"url": "http://www.w3schools.com/xml/default.asp"
}
]
答案 0 :(得分:1)
XMLHttpRequest不起作用的原因是因为您使用file://协议打开html文件。 XMLHttpRequest对象用于在后台与服务器交换数据。当尝试使用本地文件中的XMLHttpRequest执行HTTP请求时,由于Access-Control-Allow-Origin违规,它基本上会失败。因此,您需要做的是在Web服务器中托管html文件和文本文件,然后使用http协议访问html文件,即在Web浏览器中输入html页面的URL,如:http://www.example.com/1.html。