Javascript 不能在Chrome中加载XML文件,但可以在Firefox和Edge中加载
我在为一份工作练习XML ES6技能,无法在Chrome上打开和读取XML文件。它是在Firefox和Edge中打开的。 我想知道chrome是否有专门的sintax,或者我是否键入了错误的内容 以下是来自crhome的错误消息: index.html:27[Deprecation]主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。如需更多帮助,请查看。 (匿名)@index.html:27 index.html:29未能加载file:///C:/Backup/Programacion/Practicas/Javascript%20(ES6)/Practica%203/datos_xml/books.xml:跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https。 (匿名)@index.html:29 index.html:29未捕获的DomeException:未能对“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 代码如下:Javascript 不能在Chrome中加载XML文件,但可以在Firefox和Edge中加载,javascript,xml,google-chrome,dom,Javascript,Xml,Google Chrome,Dom,我在为一份工作练习XML ES6技能,无法在Chrome上打开和读取XML文件。它是在Firefox和Edge中打开的。 我想知道chrome是否有专门的sintax,或者我是否键入了错误的内容 以下是来自crhome的错误消息: index.html:27[Deprecation]主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。如需更多帮助,请查看。 (匿名)@index.html:27 index.html:29未能加载file:///C:/Back
<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>
var w,documento_cargado,num_lib;
var tit、aut、anio、prec;
var数组_libros=[];
//创建到该文件的连接。
w=新的XMLHttpRequest();
//定义要打开并发送请求的文件。
w、 打开(“GET”,“datos_xml/books.xml”,false);
w、 setRequestHeader(“内容类型”、“文本/xml”);
w、 发送(空);
//将响应放在一个XML文档中(佐证名称为DONDE LO PONE,CREO QUE ES UN OBJETO NO UN DOCUMENTO)。
documento_cargado=w.responseXML;
//将根节点放置在元素中。
Bookstore=documento_cargado.childNodes[0];
num_lib=Bookstore.children.length;
对于(var i=0;i
Saludos cordiales.此处错误信息的重要部分是 跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https 您正在从本地文件系统加载文件,如url上的
file://
前缀所示。由于文件
不是chrome支持的协议方案之一,因此只有一件事可以在chrome中实现这一点:使用一个命名的协议方案
最有可能的是http。您需要设置一个http服务器来为您提供文件,而不是从文件系统加载
这可能很有帮助:Chrome将
文件://
uri视为跨源,即使是在文件://
服务页面中-这是某种安全措施。。。。尝试在本地使用http服务器。。。查看错误状态跨源请求如何仅支持协议方案:http、数据、chrome、chrome扩展、https。。。而且文件
不在其中。此外,所有浏览器都会抱怨同步XMLHttpRequest,因为它会对最终用户的应用程序产生有害影响,因此被弃用experience@Jaromanda谢谢你的帮助。我是XML新手,我不知道这是由哪一部分构成的;另外,关于“本地http服务器”,你是怎么说的?我正在从其他浏览器的硬盘上运行HTML文件(这是HTML格式的)。同步不是你的主要问题-你的主要问题是第一条评论。。。但是<代码>w.open(“GET”,“datos_xml/books.xml”,false)代码>错误使其同步-但使其异步无法修复ChromeOkey。我会调查一下。谢谢你的帮助。我可以使用AppServ吗?如果它可以通过http提供文件服务,应该可以。我不知道那个特定的软件,所以我不能提供更多关于它的信息。谢谢你的帮助。Appserv工作得很好。只需将HTML文件拖放到www文件夹中,并将文件路径更改为“localhost”/folder/file.HTML。