如何在没有AJAX的情况下本地获取JSON

时间:2012-10-21 06:29:22

标签: javascript jquery ajax json html5

我正在使用HTML5 Canvas和Javascript构建游戏,我正在使用JSON格式的瓷砖地图作为我的关卡。瓷砖在FireFox中正确呈现,但是当我使用Chrome时,JSON提取失败,并且“Access-Control-Allow-Origin不允许使用Origin null”。我使用的是jQuery的$ .ajax命令,我的所有文件都在一个目录中。

我会使用this post的解决方案,但我无法使用网络服务器解决方案。

有没有其他方法可以获取要解析和读取的JSON文件?类似于通过提供URL加载图像的东西?或者有没有办法快速将我的JSON文件转换为全局可用字符串,以便我可以用JSON.parse()解析它?

2 个答案:

答案 0 :(得分:1)

Chrome中可能适用的一个选项是使用命令行开关--allow-file-access-from-files调用浏览器。这个问题解决了这个问题:Google Chrome --allow-file-access-from-files disabled for Chrome Beta 8

另一种可能性是将JSON数据作为脚本获取,将全局变量设置为JSON值

答案 1 :(得分:1)

为什么本地Web服务器不是一个选项? Apache是​​免费的,可以安装在任何东西上,并且易于使用,IMO。此外,对于Chrome,请查看--allow-file-access-from-files

但是,如果没有其他工作,也许您只需添加指向script标记中文件的链接,然后将var SomeGlobalObject = ...附加到每个文件的顶部。您甚至可以通过使用JS将脚本标记附加到head来动态执行此操作。但最终,您可以执行JSON.parse(SomeGlobalObject)

,而不是使用AJAX

换句话说,通过添加脚本标记将文件加载到全局命名空间中。通常这被认为是不好的做法,但仅用于测试,在没有任何其他选项的情况下,它可能有效。