ajax访问其他电脑的文件,解决ajax不能访问本地文件问题(利用js跨域原理)

news/2024/7/3 2:27:23

博主自己在开发一个无后台,只有前台的查询系统时,遇到一个困难,如何利用Ajax读取自己的本地json文件,百度、谷歌了下,发现大部分文章都是在说修改浏览器参数,但是自己想想,用户在使用时,还要修改浏览器的参数,这样显然降低了用户体验。自己琢磨了一段时间,发现可以利用js跨域原理来解决这个瓶颈。将之前要读取的json文件,变为js对象文件,这样就可以读取这个文件,然后写一个函数来对这个js对象进行解析。

首先说明下js跨域原理和jsonp这个技术(如果说的不详细,可自行百度、谷歌)

src可以跨域请求,但是这个资源不能作为js解析,资源不是js,所以解析json的时候会出错

中间是一个对象,调用fun把这个对象传入进去,

定义的function fun可以看作是请求成功后回调函数

jsonp本质:是通过script标签跨域,来突破跨域限制请求;返回的数据中用一个函数来包装起来

jsonp是用来解决js跨域请求数据的问题,原理:是通过script标签可以跨域请求资源的原理间接的请求数据。

jsonp需要满足3个条件:

1、通过script的src请求资源

2、请求的资源中用回调函数的将数据进行包裹

3、调用方要定义回调函数

下面贴入demo来演示Ajax读取本地文件,ps:在没有服务器的情况下

d52155cb6407f59db04ce66ab0879489.png

下面是上面html页面打开效果图(为了说明成功读取本地文件)

27b876c00b1eceb4ac898c07f98f08d6.png

贴入上面的test.html代码

function fun(data){

//var dataj=JSON.parse(data.pro); //可以将json字符串转换成json对象

alert(data.pro);

var obj = eval(data.pro);

//alert(obj.name);

//$.each(obj,function(index,position){

//alert(+position['name']);

//html+=""+position["name"]+"";

//});

for(var i=0;i

alert(obj[i].name);

}

alert(1);

}

/*下面的代码,是之前利用ajax来读取本地json文件的代码,是不能实现的,运行时,可以不贴入下面的代码*/

$(function(){

alert($);

/*$.ajax({

type: "GET",

url: "json/positionMenu.json",

dataType: "json",

success:function(data){

alert(data);

}

});*/

})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程圈。


http://lihuaxi.xjx100.cn/news/236168.html

相关文章

css:z-index

针对position: absolute;解决position:relative;z-index固定定位层级显示问题转载于:https://blog.51cto.com/13507333/2352775

Java数组合并,完成排序,从时间复杂度,和空间复杂度考虑

2019独角兽企业重金招聘Python工程师标准>>> 提供方法,直接调用,支持任意个数组的合并成一个数组,并且完成排序,每个数组元素个数不定。需要提供两个方法,分别做到时间复杂度最低、空间复杂度最低。并说明两…

服务器操作系统安全更新,服务器操作系统安全更新

服务器操作系统安全更新 内容精选换一换使用弹性云服务器或者外部镜像文件创建私有镜像时,必须确保操作系统中已安装UVP VMTools,使新发放的云服务器支持KVM虚拟化,同时也可以提升云服务器的网络性能。如果不安装UVP VMTools,云服…

Redis的集群模式

集群 即使使用哨兵,此时的Redis集群的每个数据库依然存有集群中的所有数据,从而导致集群的总数据存储量受限于可用存储内存最小的数据库节点,形成木桶效应。由于Redis中的所有数据都是基于内存存储,这一问题就尤为突出了尤其是当使…

综合布线系统入门及应用(二)

一、工程材料用量估计 1、信息模块及水晶头用量统计 信息插座与工位数量1:1,在增加5%的余量 跳线:一般需要2条,工位信息面板到设备,交换机到配线架,每根条线2个水晶头,预留10%-15%。 2、线槽用量统计 根据办…

JDBC

当我们在写一个程序时,会产生很多有用的数据,我们的注册信息,我们的购物车,我们的记录下来的一些信息,但我们知道程序运行在内存中,当断电后,运行时产生的数据全都会消失了,那怎么办…

力扣(LeetCode)933

题目地址:https://leetcode-cn.com/probl...题目描述:写一个 RecentCounter 类来计算最近的请求。 它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。 返回从 3000 毫秒前到现在的 ping 数。 任何处于 [t - 3000, …

Thorntail 2.2.0提供从WildFly Swarm自动迁移的特性

自6月底宣布把WildFly Swarm2018.5.0改名为Thorntail2.0.0以来,Red Hat在8月中旬以后的三个周里发布了Thorntail 2.1.0版本和2.2.0版本。除了许多Bug修复外,尤其是和MicroProfile相关的,新特性还包括:\\符合MicroProfile 1.3\通过…