我正在从事XML ES6技能的工作,但是无法在Chrome上打开和读取xml文件。该文件在Firefox和Edge中打开。 我想知道chrome是否有特殊的sintax或输入的内容有误。
这是来自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 ,数据,chrome,chrome扩展名,https。 (匿名)@ index.html:29 index.html:29未捕获的DOMException:无法在'XMLHttpRequest'上执行'发送':无法加载'file:/// C:/ Backup / Programacion / Practicas / Javascript%20(ES6)/ Practica%203 / datos_xml / books.xml”。 在file:/// 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。
答案 0 :(得分:1)
此错误消息的重要部分是
仅协议方案支持跨源请求:http,数据,chrome,chrome扩展名,https
您正在从本地文件系统加载文件,如url上的file://
前缀所示。由于file
不是chrome为此目的支持的协议方案,因此您只能在chrome中执行此操作:使用一种命名的协议方案。
最可能的一个是http。您将需要设置一个http服务器来为您提供文件,而不是从文件系统中加载。
这可能会有所帮助:https://developer.mozilla.org/en-US/docs/Learn/Common_questions/set_up_a_local_testing_server