4

我正在开发一个小型 HTML5 网络应用程序,用户可以通过浏览器离线使用,跨平台。他们将收到 CD 或 USB 棒上的 wep 应用程序,然后双击 HTML 文件。HTML 文件然后从同一目录/子目录本地加载 CSS、JavaScript 文件等。

到目前为止,一切都很好。但我还想加载一个包含 JSON 的文件(也是本地的,来自同一个目录),并使用该数据构建 DOM 的一部分。

    $.getJSON("playlistcontent.json", function (json) {
        //use the data...
    });

在这里我遇到了著名的

Access-Control-Allow-Origin 不允许 Origin null

错误。有很多关于这个的资源,甚至是非常相似的问题。但由于这是故意在本地进行的,因此建议的解决方案不起作用。

但是,由于 AJAX 是“异步”的,我认为可能有更“同步”或更好的方法?JSONP 呢?

注意:我知道我可以在禁用安全检查的情况下启动浏览器(尤其是 Chrome),但这不是我的用户的选项。

4

3 回答 3

4

我在这里回答了一个类似的问题。

您可以使用 HTML5 的File API,其中包含 a FileReader,然后调用JSON.parse结果。

于 2013-02-14T20:24:37.937 回答
1

我喜欢 Felix Kling 的方法,如果您只需要 JSON 数据,您可以通过设置 JS 变量来加载数据并使用脚本标签加载 JSON 文件。但是,如果这还不足以满足您的需求,您可以使用http://www.server2go-web.de/之类的解决方案,该解决方案将从 CD 运行网络服务器,从而绕过本地文件限制。

于 2013-02-14T20:23:57.353 回答
1

我会使用 Felix Kling 的 JSONP 方法。将数据文件包装在回调函数中:

(function(data) {
  // Do things with your data object here
})(
  // Put your data object here as the argument to the callback
);

当您将此脚本文件包含在标签中时,将自动执行回调函数。

于 2013-02-14T20:39:33.680 回答