【发布时间】:2011-02-22 14:19:45
【问题描述】:
我对 JS 非常陌生,我正在做一个小的 html 页面,目前该页面将在本地运行。我有一个 JSON 格式的字符串,我需要能够将它作为文件存储/加载到硬盘上。
为了能够存储字符串,我已经在 Firefox 上使用它:
function saveJSON() {
var obj = {name:'John', max:100};
window.open( "data:text/json;charset=utf-8," + escape(JSON.stringify(obj)))
}
但是,它只适用于 FF,而且我还需要能够使用 Internet Explorer 来做到这一点。我已经阅读了一些有关使用 ActiveX 的资料,但我没有找到任何有关如何使用的示例。
我应该尝试使用 ActiveX,还是有更好的 HTML/JS 方法来保存适用于两种浏览器的文件?
第二个问题是加载 JSON 文件。我发现一旦加载,我可以使用 JSON.parse 将其转换为 JSON var。但我不知道如何加载选定的 JSON 文件。我有一个
<input type=file id="filePath">
获取文件路径(尽管它在两个浏览器中返回不同的东西),我希望能够做类似的事情
var a = loadFile(filePath.value)
关于如何做的任何建议?我真的被困在这里,非常感谢任何帮助。
谢谢。
【问题讨论】:
-
我不认为你可以在纯客户端 JS 中通过路径打开文件......因为,否则,任何网站都可以浏览客户端的高清(这有点吓人。)用户浏览后在他们的硬盘驱动器上创建一个文件,他们必须将该文件发布回服务器端,然后您的服务器端可以在页面上呈现 JS。您可以通过将其发布到 IFRAME,然后从 IFRAME 加载内容,而无需刷新页面,但我不知道如何绕过一些服务器端代码来支持这一点。跨度>
-
不使用 Javascript 进行文件 I/O,如果您利用 HTML5 的本地存储来存储 JSON 字符串会怎样? (适用于所有“现代”浏览器...)
-
我认为本地存储不适合我的应用程序。它将像这样运行:几台 PC 拥有所有文件,并且 JSON 文件将分发到每台机器,以便它们可以加载文件。这是设置服务器时的临时解决方案,但现在我应该这样做。 :
-
这太糟糕了。嗯,希望你的服务器快点上线!
标签: javascript json internet-explorer load local