【问题标题】:Read local JSON file (no web-server) with JavaScript使用 JavaScript 读取本地 JSON 文件(无网络服务器)
【发布时间】:2012-11-28 00:35:41
【问题描述】:

这似乎已经被问过很多次了,但我想确保没有其他选择。

所以我需要做的是:

  1. 从 .net 生成 .JSON 文件(简单)
  2. 使用 JavaScript 读取本地 JSON 文件并生成包含有用图表等的 html 页面(使用 Raphaeljs)。
  3. 将结果(HTML + 关联的 JavaScript)交付给客户端。

我不介意安装本地 Apache 来轻松读取 JSON 文件,但由于我无法要求客户端执行此操作,我正在寻找一种读取本地 JSON 文件的方法(在文件系统上,没有 Web 服务器)使用 JavaScript,以便我最终向客户端提供 HTML、.js 和 .json,他可以看到相关的图表。

我一直在阅读 FileReader 类是一个选项,但我希望能够灵活地在许多 IE 浏览器上支持这些(比如说 IE7 到 IE10)。

任何有关如何解决此问题的帮助将不胜感激。

【问题讨论】:

  • 我不是 100% 确定我理解您的设置。生成 JSON 文件的 .NET 程序是在客户端计算机上运行的 GUI 应用程序/服务吗?您会为用户启动浏览器,还是希望用户在预先存在的页面上选择文件?
  • “本地”是指网络服务器上的文件吗?还是在最终用户的机器上?...如果文件在服务器上,您可以完成这项工作...如果在客户端上,您就卡住了。
  • .net 生成包含我的数据的 JSON 文件。然后 json 应该由 javascript 读取以生成图形等。我返回给客户端的是 html(带有 javascript 和 json),以便直观地查看我的数据(客户端不必提供任何数据或 json)。您可以想象 html 充当返回给客户端的报告而不是演示文稿,比如说。一切都是本地的和静态的。

标签: javascript json file


【解决方案1】:

出于安全原因,Web 浏览器无法从文件系统中读取文件。如果我理解正确,您在本地机器上运行了一个 .NET 应用程序?

如果是这种情况,您可以托管 WCF 服务以从您的应用程序中提供 JSON。此MSDN page 中描述了 WCF 自托管。您应该能够从浏览器向本地主机上的应用程序中托管的服务器发出 AJAX 请求。

【讨论】:

    【解决方案2】:

    如果你想支持旧的 IE,你需要进入 ActiveX 安全设置地狱。查看var fso = new ActiveXObject("Scripting.FileSystemObject");

    但是如果您将内容和 HTML 文件交付给客户端,为什么不直接将 JSON 标记添加到 html 文档中呢?似乎是简单的解决方案。

    【讨论】:

    • “将 JSON 标记直接添加到 html 文档中”是什么意思?
    • <script>var myCode = { "foo" : "bar", "count" : 42 };</script>
    【解决方案3】:

    您无法在浏览器中从本地磁盘读取文件(安全限制)。但是,一旦您要交付 HTML + js 和 JSON(以 zip 格式?),您就可以像从常规 Web 服务器一样读取 json。只需使用相对链接,如果 JSON 将位于 HTML 和 JS 所在的同一文件夹中。或者您可以将您的 JSON 作为您交付给客户的 HTML 的一部分。

    但是,如果您要在 Web 站点上显示页面(HTML 和 JS),您最好让客户端上传他们的 JSON 文件,而不是从服务器下载(以 AJAX 样式)。

    【讨论】:

      猜你喜欢
      • 2011-11-02
      • 2013-11-04
      • 2019-04-22
      • 1970-01-01
      • 2018-04-22
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      相关资源
      最近更新 更多