将对象和类别 ID 或其他不应呈现给用户的系统变量从服务器传递到浏览器的最有效方法是什么?
假设我有一个项目列表,我可以通过 javascript 对每个项目执行某些操作,例如显示工具提示 html 或通过 ajax 添加到收藏夹,或显示在 map 上。工具提示 html、数据库 ID 或地理位置最好保存在哪里?
我能想到的一些选项是:
<script></script>
标记中每个项目的一些字典,- 微格式,
- 内联 xml,
-
rel
属性, - 带有特定信息的 css 类名,例如
class="lat-12345 uid-45678"
, - 一个
<script></script>
,其中包含 html id 字典,将字典与模板中的系统值进行映射, - 从数据库生成 JavaScript,并通过
<script src="..."></script>
包含 html id 字典,将字典与模板中的系统值映射, - 当我需要更多信息而不仅仅是 id 时,ajax 请求适用于所有情况,
- 在 html 标签内带有参数的事件处理程序,例如
onmouseover="tooltip(this, 123, 'Hello world!')"
。
附注我更喜欢不引人注目的解决方案,而且加载/执行时间也很重要。
最佳答案
也许我错过了一些东西......为什么不只是 JSON?
如何“发送”它(无论是在初始页面加载为“javascript”还是通过 AJAX 或其他方式)实际上只是一个琐碎的细节,主要取决于数据何时可用。 (JSON 是合法 JavaScript 语法的子集。)
那么这只是正确转换的问题。当然,通过将其推送到 JSON/JS,您可能会导致某些非 JS 客户端不可互操作(如果您考虑到这一点)。如果情况确实如此,为什么不直接使用您放在顶部的任意数量的技术来在服务器端执行转换呢?
您还可以在 HTML 中使用任意属性(HTML5 规范可能包括正式合法化的“data-*”)——虽然技术上不“正确”,但所有主要 Web 浏览器都将接受未知属性,这些属性可以通过DOM API。
关于javascript - 将系统值传递给 JavaScript 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3917765/