这篇文章给大家介绍使用ajax无法访问本地文件如何解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
首先说明下js跨域原理和jsonp这个技术(如果说的不详细,可自行百度、谷歌)
src可以跨域请求,但是这个资源不能作为js解析,资源不是js,所以解析json的时候会出错
中间是一个对象,调用fun把这个对象传入进去,
定义的function fun可以看作是请求成功后回调函数
jsonp本质:是通过script标签跨域,来突破跨域限制请求;返回的数据中用一个函数来包装起来
jsonp是用来解决js跨域请求数据的问题,原理:是通过script标签可以跨域请求资源的原理间接的请求数据。
jsonp需要满足3个条件:
1、通过script的src请求资源
2、请求的资源中用回调函数的将数据进行包裹
3、调用方要定义回调函数
下面贴入demo来演示Ajax读取本地文件,ps:在没有服务器的情况下
下面是上面html页面打开效果图(为了说明成功读取本地文件)
贴入上面的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>
关于使用ajax无法访问本地文件如何解决就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。