JS如何在本地读取json等文件

JS如何在本地读取json等文件,第1张

点击“下载”按钮,会把文本域中的内容全部作为一个html后缀文件下载下来,各流程效果如下面几张图:

下载按钮点击示意

出现下载确认框(根据浏览器的设置不同也可能直接下载),然后名称默认就是testhtml。

默认就是testhtml名称

然后对应保存目录就多了个类似下图的文件:

保存好的testhtml文件截图示意

双击该testhtml文件可以在浏览器中正常浏览,说明,保存信息无误。

testhtml在浏览器中访问的效果

触发下载的JS代码就几行:

对于非文本文件,也是可以直接JS触发下载的,例如,如果我们想下载一张,可以把这张转换成base64格式,然后下载。

代码示意:

不止是html文件,txt, json等只要内容是文本的文件,都是可以利用这种小技巧实现下载的。

在Chrome浏览器下,模拟点击创建的<a>元素即使不append到页面中,也是可以触发下载的,但是在Firefox浏览器中却不行,因此,上面的funDownload()方法有一个appendChild和removeChild的处理,就是为了兼容Firefox浏览器。

download属性从Edge13开始支持,理论上,edge也应该支持直接JS触发的浏览器文件下载,但我手头上并无相关浏览器,无法确定真实情况如何,欢迎有条件的小伙伴帮忙测下告知结果。

就这些吧,感谢阅读!

jquery 中有一个 load 可以加载远程的内容

<script type="text/javascript">

< !--$(document)ready(function() {

alert("");

$("#jsonid")load(">

你的这个txt文件,改成json文件(js也可以);

你可以做一个测试,将你的json文件和你的调用js文件和你的页面放在一个目录下;然后$getJSON(url, function(data){ // todo }); // 这里的url直接是xxjson

如果你的页面和js文件和json文件不再一个目录,就要将url写成页面相对于json文件的路径。

或者等等不一而足。

gloadScript = function (uri, cb, charset) {//load 单个请求

var _script = documentcreateElement("script");

_scripttype = "text/javascript";

_scriptcharset = charset || "utf-8";

_script_fun = typeof cb != "undefined" cb : new Function();

_script[documentall "onreadystatechange" : "onload"] = function () {

if (documentall && thisreadyState != "loaded" && thisreadyState != "complete") { return; }

this_fun(this);

this_fun = null;

this[documentall "onreadystatechange" : "onload"] = null;

var _t = this;

_tparentNoderemoveChild(_t);

};

_scriptsrc = uri;

documentgetElementsByTagName("head")item(0)appendChild(_script);

};

loadScript(url,function(){consolelog(json)},"utf-8")//把你的文本文件换成HTML,url是html地址,json是你的json变量的变量名。jsonp格式获取。

在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:

1一种为使用eval()函数。

2 使用Function对象来进行返回解析。

用eval函数来解析,并且使用jquery的each方法来遍历

用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器 返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明。

这里首先给出JSON字符串集,字符串集如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

代码如下:

var data="

{

root:

[

{name:'1',value:'0'},

{name:'6101',value:'北京市'},

{name:'6102',value:'天津市'},

{name:'6103',value:'上海市'},

{name:'6104',value:'重庆市'},

{name:'6105',value:'渭南市'},

{name:'6106',value:'延安市'},

{name:'6107',value:'汉中市'},

{name:'6108',value:'榆林市'},

{name:'6109',value:'安康市'},

{name:'6110',value:'商洛市'}

]

}";

var dataObj=eval("("+data+")");//转换为json对象

alert(dataObjrootlength+"个对象");

for(var i=0;i<dataObjrootlength;i++){

var obj=dataObjroot[i];

alert(objName+"--"+objvalue);

}

由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语 句(statement)来执行。

第二种解析方式就是使用Function对象来完成,它的典型应用就是在JQUERY中的AJAX方法下的success等对于返回数据data的解析

1

2

3

var json='{"name":"CJ","age":18}';

data =(new Function("","return "+json))();

此时的data就是一个会解析成一个 json对象了

假如你这个json对象用变量j表示

用下面代码

var t='', k=jstudentjson;

//得到数组k

for(var i=0;i<klength;i++){

    var m=k[i];

    t+=['<tr><td>'+m['学号'],m['姓名'],m['性别'],m['班级']+'</td></tr>']join('</td><td>');

}

t='<table><tbody>'+t+'</tbody></table>';

//得到表格html代码t

以上就是关于JS如何在本地读取json等文件全部的内容,包括:JS如何在本地读取json等文件、如何用Javascript通过URL获取json文件内容、JS怎么读取txt文件中的json数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/10154551.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存