最近遇到一个问题,一个.txt文件有上万条数据,需要从文件中查询数据并进行计算。
1、首先的思路是.txt文件转为.json文件
用fileReader 来对数据进行处理
2、处理后得到一个json数组对象,但是不能每次用到的时候都去读取.txt文件,毕竟里面的数据可不少,还是本地生成一个json文件
function trans(){var _FileData;var _FileName = "";// 读取本地文件var aryData = [];function readFile(input) {console.log(input)$('.condition .add-new').remove();$("#table").html("");// chrome IE10var file = input.files[0];console.log(file)_FileName = $("#file").val();_FileName = _FileName.replace(/^.+?\\([^\\]+?)(\.[^\.\\]*?)?$/gi, "$1"); //正则表达式获取文件名,不带后缀var reader = new FileReader();reader.readAsText(file, 'utf-8');reader.onloadend = function () {var fileContent = this.result;var arrLine = fileContent.split("\n");var arrHead = arrLine[0].split(" ");var str = "<thead>";var jsonArrayStr = "";for (var j = 1; j < arrLine.length; j++) {var jsonData = {};console.log(arrLine[j])var arrItem = arrLine[j].split(" ");for (var i = 0; i < arrHead.length; i++) {jsonData[arrHead[i].toString()] = arrItem[i].toString();}aryData.push(jsonData)}console.log(aryData)downloadJson(aryData)}}function downloadJson(data) {var blob = new Blob([JSON.stringify(data)], {type: ""});saveAs(blob, "mat.json");}
}
(1)上述filesaver.js先引入,方法saveAs()即生存一个文件保存在本地。
(2)生成json文件后,先用$.getJson报错,说跨域了,
再用ajax封装好的get方法,把dataTata写为jsonp,还是报错跨域
(3)最后在网上找到一位兄弟的方法,是用<script>来引入,请求的末尾加了?callback
这个方法注意一下,一定要在json数据的外面包一层callback的函数名
这位兄弟的博文链接:https://blog.csdn.net/jiaoshuaiai/article/details/78417683
3、将提交input的type属性由submit改为button,则required属性不起作用
为了阻止表单的默认提交,input的type属性由submit改为button,但是input type="text"的输入框的required将不再验证