问题:
前端制作静态页面,使用ajax读取数据,前台显示,但是在chrome下显示不出来。
目录结构:
其中, chartdata.html为请求访问的页面,构造数据格式为json。(该示例已上传至我的资源)
查找原因:
打开Chrome,通过JavaScript调试工具,显示问题如下:
XMLHttpRequest cannot load file:///D:/DangDangUED/DDCommon/general/Chart/jQChart/chartdata.html. Origin null is not allowed by Access-Control-Allow-Origin.
断点调试,说是eval(data)[0]无法读取。
解决:
Google一把,在Stackoverflow上找到该问题的解答:
原来,ajax会对请求进行分析,比方说如果只是静态页面请求,那么地址均为 file://// ,相应的采取本地策略。对于chrome,则是出现XMLHTTPRequest 无法访问的问题。
当把页面放置于服务器上,地址均为 http:// ,搞定!
PS:chrome的上网设置使用的是IE的网络设置,如果你使用了代理上网,记得在本地调试的时候,勾选“跳过本地地址的代理服务器”。
是同源策略,不允许访问本地文件,需要把页面放到一个服务器上面。
(转载自http://blog.csdn.net/spring21st/article/details/6109669)