【问题标题】:XMLHttpRequest is not working for JsonXMLHttpRequest 不适用于 Json
【发布时间】:2025-12-18 18:25:04
【问题描述】:

我对 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"
}
]

【问题讨论】:

  • 您是从 Web 还是从文件系统运行的?
  • 你使用的是http(s)://还是file://协议
  • 嗨,我在 chrome 和 firefox 中检查了相同的 1.html,但它不起作用。而对于调试,我尝试了 "var url = "myTutorials.txt";"
  • 请回答问题。您不能从 file:// 协议运行 Ajax
  • 嗨,我在 chrome 和 firefox 中检查了相同的 1.html,但它不起作用。对于调试,我尝试了“var url =”myTutorials.txt”;(或)var url =“file:///D:/pract/myTutorials.txt”;但没有用。我保留了 1.html 和 myTutorials。 "D:\pract" 中的 txt 文件

标签: html json xmlhttprequest xmlhttprequest-level2 xmlhttprequest-states


【解决方案1】:

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

【讨论】: