在写demo使用pycharm打开时运行正常,单独使用浏览器打开时报错,详细如下:
网上查了这是跨域问题,
因为浏览器收到同源策略的限制,当前域名的js只能读取同域下的窗口属性。
同源策略: 不同的域名, 不同端口, 不同的协议不允许共享资源的, 保障浏览器安全。
前端最佳的解决办法就是使用jsonp
Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
应用如下:
①比如你要访问tiku.json数据;正常使用jquery获取代码如下:
}
$(function(){
$.getJSON('tiku.json',function(data,status){
console.log(data);
})
})
然而这样浏览器包跨域错误。
使用jsonp的解决办法如下
<script>
function demo(res){
console.log(res)
}
</script>
<script src="tiku.json?callback=demo"></script>
除了在前端修改意外,还需要修改tiku.json内容,
修改前(举例):
{‘name’:[{"n1":1,"n2":2}],"value":[{"v1":"a","v2":"b"}]}
修改后(举例):
demo({‘name’:[{"n1":1,"n2":2}],"value":[{"v1":"a","v2":"b"}]})
总的来说就是把tiku.json所有内容content,防止在函数javascript定义的demo函数中,即demo(content)