解决ajax不能访问本地文件问题(利用js跨域原理)


Posted in Javascript onJanuary 24, 2017

博主自己在开发一个无后台,只有前台的查询系统时,遇到一个困难,如何利用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:在没有服务器的情况下

解决ajax不能访问本地文件问题(利用js跨域原理)

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

解决ajax不能访问本地文件问题(利用js跨域原理)

贴入上面的test.html代码

<script type="text/javascript" src="js/jquery-easyui-1.3.2/jquery-1.8.0.min.js"></script> 
<script> 
  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+="<option value='"+position['name']+"'>"+position["name"]+"</option>"; 
      //}); 
      for(var i=0;i<obj.length;i++){ 
         alert(obj[i].name); 
      } 
      alert(1); 
 
    } 
</script>
/*下面的代码,是之前利用ajax来读取本地json文件的代码,是不能实现的,运行时,可以不贴入下面的代码*/ 
<script type="text/javascript" src="json/abc.json"></script> 
<script> 
  $(function(){ 
    alert($); 
    /*$.ajax({ 
     type: "GET", 
     url: "json/positionMenu.json", 
     dataType: "json", 
     success:function(data){ 
         alert(data); 
      } 
    });*/ 
 
  }) 
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery判断单个复选框是否被选中的代码
Sep 03 Javascript
jquery控制listbox中项的移动并排序的实现代码
Sep 28 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
Apr 01 Javascript
文件编码导致jquery失效的解决方法
Jun 26 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
Nov 25 Javascript
原生js实现水平方向无缝滚动
Jan 10 Javascript
layui弹出层效果实现代码
May 19 Javascript
JavaScript中使用参数个数实现重载功能
Sep 01 Javascript
详解js访问对象的属性和方法
Oct 25 Javascript
JavaScript实现选项卡效果的分析及步骤
Apr 16 Javascript
JS实现移动端在线签协议功能
Aug 22 Javascript
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
Jquery树插件zTree实现菜单树
Jan 24 #Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
Jan 24 #Javascript
树结构之JavaScript
Jan 24 #Javascript
AngularJS实现使用路由切换视图的方法
Jan 24 #Javascript
javascript 正则表达式去空行方法
Jan 24 #Javascript
JavaScript中动态向表格添加数据
Jan 24 #Javascript
微信小程序开发的四十个技术窍门总结(推荐)
Jan 23 #Javascript
You might like
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
Javascript Select操作大集合
2009/05/26 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
python实现壁纸批量下载代码实例
2018/01/25 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
生物技术毕业生自荐信
2013/10/23 职场文书
服装机修工岗位职责
2013/12/26 职场文书
高一地理教学反思
2014/01/18 职场文书
优秀幼教自荐信
2014/02/03 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
物业消防安全责任书
2014/07/23 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
客房领班岗位职责
2015/02/11 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
院系推荐意见
2015/06/05 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书
python基础详解之if循环语句
2021/04/24 Python
python3 hdf5文件 遍历代码
2021/05/19 Python
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python