Не могу загрузить файл XML в Chrome, но он загружается в Firefox и Edge - PullRequest
0 голосов
/ 20 октября 2018

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

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

index.html: 27 [Устаревание] Синхронный XMLHttpRequest в основном потоке устарел из-за его пагубных последствий для конечного пользователя.Для получения дополнительной помощи проверьте https://xhr.spec.whatwg.org/. (анонимно) @ index.html: 27 index.html: 29 Не удалось загрузить файл: /// C: / Backup / 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» для «XMLHttpRequest»: не удалось загрузить «file: /// C: / Backup / Programacion / Practicas / Javascript% 20 (ES6) /Practica%203/datos_xml/books.xml.в файле: /// C: / Резервное копирование / 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.

1 Ответ

0 голосов
/ 20 октября 2018

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...