我有一个脚本,可以通过 Ajax 调用从远程服务器检索对象。服务器以 JSON 表示法返回对象。

但是,在 Adob​​e AIR 中,使用时存在限制 评估() 出于安全原因。所以我能够从远程服务器获取回复,但无法将它们转回 JavaScript 对象。这个问题有什么解决方法吗?我想对我的 JavaScript 对象使用 JSON,因为它几乎可以立即使用。

边注 :我确实理解强制解决该问题的安全隐患,但我将为竞赛进行一些快速应用程序开发,因此该程序只是一个快速原型,而不用于生产目的。尽管如此,如果有一个比我现在正在尝试做的更好的选择,那就太好了


更新:

谢谢 西奥精视 寻求他们的答案;

我今天学到的一件重要的事情是,我实际上可以通过使用 ActionScript 库

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
由 Adob​​e AIR 扩展的标签。查看 西奥的 链接了解更多详情!

有帮助吗?

解决方案

你可以找到一个 这里用 JavaScript 编写 JSON 解析器 (源代码在这里)。您还可以使用 JavaScript 中的 as3corelib JSON 解析器,有 此处描述了如何从 JavaScript 访问 ActionScript 库.

其他提示

当前的 AIR 版本 (v2.5) 捆绑了一个较新的 WebKit,该 WebKit 通过 JSON.stringify() 和 JSON.parse() 提供本机 JSON 支持。

你看过吗 as3corelib?它似乎为 JSON 数据提供了一个 AS3 解析器,我希望它不依赖于 eval(正如您所指出的,eval 往往不利于安全)。Javascript 也有类似的库,并且由于对(可能)邪恶数据调用 eval 的安全隐患,它们往往是解析 json 的首选方式。

JSON 是 Javascript 对象表示法,因此,如果您使用 Javascript,那么您已经掌握了!看一下这些链接,它们给出了如何从 JSON 创建 Javascript 对象的示例:

http://www.hunlock.com/blogs/Mastering_JSON_(_JavaScript_Object_Notation_)

http://betterexplained.com/articles/using-json-to-exchange-data/

如果您决定走 Flex/AS3 路线,那么正如 jsight 所说,as3corelib 是一个很好的起点。

我认为如果您使用 iframe 和沙箱桥这是可能的。您应该能够对沙盒 iframe 中下载的代码运行 eval(),

摘自 Adobe AIR 1.1 文档“...在沙盒子框架中运行内容可能更方便,这样内容就可以在不受 eval() 限制的情况下运行...”

另一篇相关文章: 基于 AIR 构建:使用沙盒桥

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top