上传XML并将值存储到输入(XMLHttpRequest无法加载文件)-客户端
Upload XML and store value to input (XMLHttpRequest cannot load file) - Client Side
注意:这都是客户端
我正在尝试上传一个XML文件,并在文本输入中显示该值。我正在尝试使用AJAX来发布文件。它在Firefox中运行良好,但在Chrome和IE中不起作用。Chrome显示以下错误:
XMLHttpRequest无法加载file:///C:/fakepath/data.xml.跨源请求仅支持以下协议方案:http、data、chrome、chrome扩展、https、chrome资源扩展。
演示:https://jsfiddle.net/6bgzgz0z/
<cats>
<cat id='output'>
<name>George</name>
<gender>male</gender>
<color>white-mustard</color>
<age>5 years</age>
</cat>
<cat id='output1'>
<name>Pety</name>
<gender>female</gender>
<color>white-black-mustard</color>
<age>3</age>
</cat>
</cats>
上面是我试图上传但没有得到结果的XML。
注意:一切都应该是客户端
考虑到您希望只在客户端执行此操作的要求,AJAX是多余的,因为它用于在客户端和服务器之间发出请求,也不用于读取存储在客户端上的文件。
您可以通过使用FileReader()
类来实现所需的功能。在解析和遍历数据以查找所需信息之前,您可以使用它来读取XML。试试这个:
$('#submit').click(function() {
var files = $('#file')[0].files;
var reader = new FileReader();
reader.onload = function() {
var xml = $.parseXML(this.result);
$(xml).find('cat').each(function() {
var catName = $(this).find('name').text();
console.log(catName);
$('#' + this.id).val(catName);
})
};
reader.readAsText(files[0]);
});
更新的小提琴
要想看到它完全工作,你需要创建一个单独的XML文件,在文件选择器中选择你提到的格式:
<cats>
<cat id='output'>
<name>George</name>
<gender>male</gender>
<color>white-mustard</color>
<age>5 years</age>
</cat>
<cat id='output1'>
<name>Pety</name>
<gender>female</gender>
<color>white-black-mustard</color>
<age>3</age>
</cat>
</cats>
如果您希望看到XML解析工作,这里有一个简单的小提琴拉出基本信息。
相关文章:
- 加载文件,然后调用回调函数
- 根据浏览器大小加载文件
- 错误:无法在“XMLHttpRequest”上执行“发送”:无法加载“文件”:AngularJS SPA
- Ajax在mootools中使用来加载文件
- 加载文件时xmlhttp不稳定,如何修复
- Require.js何时加载文件
- 有没有办法在不打包的情况下在 nodejs 上加载文件
- 如何通过从浏览器 js 控制台触发的 require.js 重新加载文件
- 使用jQuery加载文件,计算类的元素并设置间隔比率
- 如何在 AngularJS UI 路由器中从bower_component加载文件
- JavaScript 本地应用程序保存/加载文件
- 如何在特定页面上加载文件
- 内容安全策略不从本地主机加载文件
- Javascript 无法从其他目录加载文件
- Extjs MVC 文件夹结构无法加载文件
- 节点.js - 在运行时加载文件
- nodejs加载文件
- Javascript/AAJAX仅重新加载文件“;onchange”;
- 加载文件,并在特定行之后删除javascript/jquery中的所有剩余行
- 是否可以在非服务页面上使用JS/HTML5 FileReader加载文件