使用javascript访问上传的json文件的数据
我有一些像这样的HTML代码:
我有一个像这样的json文件:
{ "name": "John", "family": "Smith" }
还有一个简单的javascript函数:
alert_data(name, family) { alert('Name : ' + name + ', Family : '+ family) }
现在我想调用带有名称和系列的alert_data(),该名称和系列存储在使用我的html输入上传的json文件中
有什么办法吗? 使用html5文件阅读器或其他?
注意:我不使用服务器端编程,所有这些都是客户端
请帮帮我 :)
您将需要一个HTML5浏览器,但这是可能的。
(function(){ function onChange(event) { var reader = new FileReader(); reader.onload = onReaderLoad; reader.readAsText(event.target.files[0]); } function onReaderLoad(event){ console.log(event.target.result); var obj = JSON.parse(event.target.result); alert_data(obj.name, obj.family); } function alert_data(name, family){ alert('Name : ' + name + ', Family : ' + family); } document.getElementById('file').addEventListener('change', onChange); }());
Select a file with the following format.
{ "name": "testName", "family": "testFamily" }
这是Sam Greenhalghs的简写版本,对我有用。
$(document).on('change', '.file-upload-button', function(event) { var reader = new FileReader(); reader.onload = function(event) { var jsonObj = JSON.parse(event.target.result); alert(jsonObj.name); } reader.readAsText(event.target.files[0]); });
是的! 可以使用HTML5 FileReader完成。 它实际上非常简单。
将json保存为.js文件并在我的示例中加载它
{ "name": "John", "family": "Smith" }
这就是魔术发生的地方:
$("#up").change(function(event){ var uploadedFile = event.target.files[0]; if(uploadedFile.type !== "text/javascript" && uploadedFile.type !== "application/x-javascript") { alert("Wrong file type == " + uploadedFile.type); return false; } if (uploadedFile) { var readFile = new FileReader(); readFile.onload = function(e) { var contents = e.target.result; var json = JSON.parse(contents); alert_data(json); }; readFile.readAsText(uploadedFile); } else { console.log("Failed to load file"); } }); function alert_data(json) { alert('Name : ' + json.name + ', Family : '+ json.family) }
这个代码的小提琴链接: http : //jsfiddle.net/thomas_kingo/dfej7p3r/3/
(仅在Chrome和Firefox中测试了uploadedFile.type检查)
- 使用mail()的jQuery AJAX表单PHP脚本发送电子邮件,但HTML表单中的POST数据未定义
- 带有HTML5validation的JQuery对话框表单
- 有了Phonegap,我想录制语音,停止录制,并在Android中播放
- CodeIgniter + jQuery(ajax)+ HTML5 pushstate:如何使用真实URL进行干净的导航?
- 用于html5和jquery应用程序的条形码扫描程序
- HTML5“必需”validation未在Mozilla Firefox中显示错误消息
- 如何下载MP4文件而不是在浏览器上播放?
- 带有隐藏行的HTML表格备用行颜色
- 如何使用PhoneGap / Cordova为Windows Phone 7创建简单的全景应用程序?