【问题标题】:Ajax: Building HTML vs injecting HTMLAjax:构建 HTML 与注入 HTML
【发布时间】:2010-10-26 02:23:17
【问题描述】:

为了遵循 StackOverflow 提出问题而不是创建讨论的建议,让我们考虑使用 HTTPAsyncRquest 更新网页而不刷新网页的这两种方法:

1) 解析/解释 AsyncRequest 返回的数据以构建更新页面的结果 HTML 例如JSON::parseAndExecute(returnedData); // 只是一个例子

2) AsyncRequest 返回的数据是执行并更新页面的原始 jScript。 例如普通旧:eval(returnedData); // 我们知道返回的数据不是恶意代码

为了排除学术/偏好问题,假设我们使用完全相同的框架对服务器和客户端进行编程,唯一的区别是有一个选项/标志可以让它输出 JSON 或原始 jscript。

在这种情况下,是否有技术原因应该选择哪一种?

我问这个是因为在大多数情况下,原始 JSCRIPT 应该更快、更灵活,但我发现的大多数框架都不返回 JSCRIPT,而是返回由 JSCRIPT 解释的数据。

(澄清一下:我问的是它更小?更快?有安全风险吗?兼容性风险?)

stackoverflow 上的第一篇文章,耶!

【问题讨论】:

  • 先给你点赞,耶!好问题。 :-)

标签: javascript html ajax json asynchronous


【解决方案1】:

@托马斯汉森:

也许更快、更容易实现。但我不明白为什么它会使用更少的带宽。加载页面的 Javascript 代码会被缓存,因此解析和小部件构建代码只会下载一次,动态内容只是纯 JSON。

您也可能更喜欢第一个选项 (JSON),因为您正在以某种方式转换/过滤数据以响应其他 GUI 回调,并且不想依赖服务器。

【讨论】:

  • 嗯,大多数人在谈论“解析”时通常会使用 XML——这显然比 JSON 大得多……
  • 确实如此。尖括号税只会给几乎所有网络请求增加大量开销
【解决方案2】:

您的第二种解决方案通常会更快、更容易实施并且使用更少的带宽。如果您同时控制服务器端和客户端,例如一个Ajax Framework,那么安全是没有问题的。所以你唯一的问题是你最终得到一个(邪恶的)评估。无论如何,您必须拥有它,因为除了在 IE8 上之外,如果您的代码中没有至少一个 eval,则无法“解析”JSON。

我们 (Ra-Ajax) 为我们的 Ajax 引擎使用 JSON 和 HTML(所有实际问题的内部 HTML)的组合。我们使用 JSON 来更改小部件的属性和属性,而我们在小部件的初始渲染(或完整更新)中使用 innerHTML。

【讨论】:

  • Firefox 3 带有一个 JSON 解析器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-05
相关资源
最近更新 更多