javascript - 如何使用可从 Javascript 访问的 HTML 发送值?

标签 javascript platform-agnostic

网页上的 JavaScript 通常需要能够访问服务器上已知的变量。例如,用户的用户名。假设我们不想发出 JSON/XML 请求,因为这会不必要地增加复杂性以及页面点击次数。我们希望将数据与 html/Javascript 一起发送。

发送数据的一种方法是将其注入(inject) Javascript。

var x={{username}};

另一个想法是在 head 中创建一个元项并将数据存储在那里,然后使用 jQuery(或等效的)来检索它。

这两种方法中的一种比另一种更好,还是我应该考虑其他方法?

最佳答案

Is either of these methods preferable to the other or are there any other methods that I should consider?

我认为没有一个正确的答案,当然我在这个问题上听到了很多相互矛盾的意见,但是从你提到的两种方法中进行选择,我会选择将值注入(inject) JavaScript,因为我发现它更容易。

但是既然您询问了其他建议,您可以将这两种想法结合起来:您的服务器端代码可以只插入一个 <script> 而不是元项。 <head> 中的元素将数据存储在变量中,然后可以从任何其他脚本(包括多个源文件中的脚本)直接访问该变量。您可以将所有数据粘贴在单个对象中以避免大量全局变量:

<html>
<head>
<script>
   var dataFromServer = { /* all your server data here */};
</script>
<script type="text/javascript" src="somelibrarycript.js"></script> 
<script type="text/javascript" src="someotherscript.js"></script>
<script>
   if (dataFromServer.someProperty) {
      // someProperty provided above so do something with it...
   }
</script>
</head>
etc...

这种方法还有一个额外的优点,即服务器端代码本质上只是生成 JSON(如果直接包含在页面源代码中,它将成为对象文字),因此,如果您稍后决定开始使用一些 Ajax,那么您几乎已经那里。

关于javascript - 如何使用可从 Javascript 访问的 HTML 发送值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7950245/

相关文章:

javascript - $httpBackend.expect 与 $httpBackend.when

java - java "platform agnosticism"是否有可能失败的情况?

version-control - 如何将补丁发送给其他开发人员并避免合并冲突?

javascript - 脱壳到 Node 时保留输出颜色

javascript - 延迟服务和 Controller

javascript - Node 和 s3 的正确凭据

encryption - URL 和 salt 中的加密数据

java - 预编译JSP : Is that server specific?

analysis - 检测过度分析

Javascript truthy 等同于未定义、非空且非空字符串?