Canot загружает XML файл в Chrome, но загружается в Firefox и Edge

57
4

Я практиковал свои навыки XML ES6 для работы и не мог открыть и прочитать xml файл на Chrome.It открыт в Firefox и Edge. Я хотел бы знать, есть ли специальный синтакс для хром или если я набрал что-то неправильно.

Вот сообщение об ошибках от crhome:

index.html: 27 [Усталость] Синхронный XMLHttpRequest в основном потоке устарел из-за его пагубных последствий для конечного пользователя. Для получения дополнительной справки проверьте https://xhr.spec.whatwg.org/. (анонимно) @index.html: 27 index.html: 29 Не удалось загрузить файл:///C:/Резервное копирование /Programacion/Practicas/Javascript %20 (ES6)/Practica%203/datos_xml/books.xml: Перекрестное происхождение запросы поддерживаются только для схем протокола: http, data, chrome, chrome-extension, https. (анонимно) @index.html: 29 index.html: 29 Uncaught DOMException: не удалось выполнить 'send' on 'XMLHttpRequest': не удалось загрузить файл:///C: /Backup/Programacion/Practicas/Javascript %20 ( ES6)/Practica%203/datos_xml/books.xml. в файле:///C: /Backup/Programacion/Practicas/Javascript %20 (ES6)/Practica%203/index.html:29:6

И вот код:

        <section>
<form action="/action_page.php">
<select name="lista_libros" id="lib_list">

</select>
</form>
</section>

<script type="text/javascript">
var w, documento_cargado,num_lib;
var tit, aut, anio, prec;
var array_libros = [];
// Create a connection to the file.
w = new XMLHttpRequest();
// Define which file to open and send the request.
w.open("GET", "datos_xml/books.xml", false);
w.setRequestHeader("Content-Type", "text/xml");
w.send(null);
// Place the response in an XML document (CORROBORAR EL NOMBRE DE DONDE LO PONE, CREO QUE ES UN OBJETO NO UN DOCUMENTO).
documento_cargado = w.responseXML;
// Place the root node in an element.
Bookstore = documento_cargado.childNodes[0];
num_lib = Bookstore.children.length;
for (var i = 0; i < num_lib; i++){
tit = documento_cargado.getElementsByTagName("title")[i].childNodes[0].nodeValue;
aut = documento_cargado.getElementsByTagName("author")[i].childNodes[0].nodeValue;
anio = documento_cargado.getElementsByTagName("year")[i].childNodes[0].nodeValue;
prec = documento_cargado.getElementsByTagName("price")[i].childNodes[0].nodeValue;
array_libros[i] = new Array (tit, aut, anio, prec);
}
alert("ssss");
</script>
<script type="text/javascript">
var option, x;
for(var i = 0; i < num_lib; i++){
x = document.getElementById("lib_list");
option = document.createElement("option");
option.text = array_libros[i][0];
x.add(option);
}
</script>

Saludos cordiales.

спросил(а) 2018-10-20T01:21:00+03:00 1 год, 11 месяцев назад
1
Решение
57

Важная часть сообщения об ошибке здесь

Запросы на кросс-начало поддерживаются только для схем протокола: http, data, chrome, chrome-extension, https

Вы загружаете файл из локальной файловой системы, как указано в file:// префикс на url. Поскольку file не является протоколом схем, поддерживаемых хром для этой цели, вы можете сделать только одну вещь, чтобы сделать эту работу в chrome: используйте одну из названных схем протокола.

Самый вероятный из них - http. Вам нужно будет настроить HTTP-сервер, чтобы обслуживать файлы для вас, вместо загрузки из файловой системы.

Это может быть полезно: https://developer.mozilla.org/en-US/docs/Learn/Common_questions/set_up_a_local_testing_server

ответил(а) 2018-10-20T01:39:00+03:00 1 год, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема