XMLHttpRequest не работает для Json

Я очень новичок в JSON. Так что прочитайте несколько тем о w3schools и попытайтесь выполнить их локально, но это не работает. Пожалуйста, кто-нибудь, помогите мне преодолеть эту проблему.

Примечание: 1) Храните файлы 1.html и myTutorials.txt в одном каталоге. 2) Я отладил HTML-код и обнаружил, что "xmlhttp.status" всегда равен нулю. 3) Но тот же код на сайте w3schools работает нормально. Ссылки:

я) 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"
}
]


1 ответ

Причина, по которой XMLHttpRequest не работает, потому что вы используете протокол file:// для открытия файла html. Объект XMLHttpRequest используется для обмена данными с сервером за кулисами. При попытке выполнить HTTP-запрос с использованием XMLHttpRequest из локального файла он в основном завершается неудачей из-за нарушения Access-Control-Allow-Origin. Поэтому вам нужно разместить html-файл и текстовый файл на веб-сервере, а затем получить доступ к html-файлу по протоколу http, т.е. ввести URL-адрес html-страницы в веб-браузере, например: http://www.example.com/1.html.

Другие вопросы по тегам