解决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实用代码片段集合
Aug 12 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
Jan 27 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
Sep 02 Javascript
JavaScript中Form表单技术汇总(推荐)
Jun 26 Javascript
AngularJs Understanding the Controller Component
Sep 02 Javascript
javascript 判断用户有没有操作页面
Oct 17 Javascript
vue地址栏直接输入路由无效问题的解决
Nov 15 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
Oct 11 Javascript
p5.js实现故宫橘猫赏秋图动画
Oct 23 Javascript
jQuery实现移动端图片上传预览组件的方法分析
May 01 jQuery
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
May 13 Javascript
使用Vue.js和MJML创建响应式电子邮件
Mar 23 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微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
python函数局部变量用法实例分析
2015/08/04 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
教师个人剖析材料
2014/02/05 职场文书
名人演讲稿范文
2014/09/16 职场文书
店铺转让协议书
2014/12/02 职场文书
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python