0

我对 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

我的 HTML 代码:1.html

<!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>


以下内容来自“myTutorials.txt”文件。

[
{
"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"
}
]


4

1 回答 1

1

XMLHttpRequest 不起作用的原因是您使用 file:// 协议打开 html 文件。XMLHttpRequest 对象用于在后台与服务器交换数据。当尝试使用来自本地文件的 XMLHttpRequest 进行 HTTP 请求时,它基本上由于 Access-Control-Allow-Origin 冲突而失败。因此,您需要做的是将 html 文件和文本文件托管在 Web 服务器中,然后使用 http 协议访问 html 文件,即在 Web 浏览器中输入 html 页面的 url,例如: http ://www.example.com/ 1.html

于 2014-12-03T23:55:41.063 回答