Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用HTML发送可从Javascript访问的值?_Javascript_Platform Agnostic - Fatal编程技术网

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

如何使用HTML发送可从Javascript访问的值?,javascript,platform-agnostic,Javascript,Platform Agnostic,网页上的Javascript通常需要能够访问服务器上已知的变量。例如,用户的用户名。假设我们不希望发出JSON/XML请求,因为这会不必要地增加复杂性和页面点击数。我们希望将数据与html/Javascript一起发送 var x={{username}}; 发送数据的一种方法是将数据注入Javascript var x={{username}}; 另一个想法是在头部创建一个元项并将数据存储在那里,然后使用jQuery(或等效工具)检索数据 这两种方法中哪一种更可取,或者还有其他方法我应该考

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

var x={{username}};
发送数据的一种方法是将数据注入Javascript

var x={{username}};
另一个想法是在头部创建一个元项并将数据存储在那里,然后使用jQuery(或等效工具)检索数据


这两种方法中哪一种更可取,或者还有其他方法我应该考虑吗?< /P> < P>我只会在头中有一个元素,声明一个名为Global对象的包含您的信息的元素。比如:

<script type="text/javascript" >
    this.blah = this.blah || {};
    this.blah.userinfo = this.blah.userinfo || {};

    this.blah.userinfo = {
        "username" : "UserName42"
        "gender" : "Male"
    };
<script>

this.blah=this.blah{};
this.blah.userinfo=this.blah.userinfo | |{};
this.blah.userinfo={
“用户名”:“用户名42”
“性别”:“男性”
};

上面的两行只是初始化全局对象。因为它是全局的,所以我们使用“blah”来命名它的名称空间。

我只是在头部有一个元素,它声明了一个包含您的信息的命名良好的全局对象。比如:

<script type="text/javascript" >
    this.blah = this.blah || {};
    this.blah.userinfo = this.blah.userinfo || {};

    this.blah.userinfo = {
        "username" : "UserName42"
        "gender" : "Male"
    };
<script>

this.blah=this.blah{};
this.blah.userinfo=this.blah.userinfo | |{};
this.blah.userinfo={
“用户名”:“用户名42”
“性别”:“男性”
};

上面的两行只是初始化全局对象。由于它是全局的,我们使用“blah”来命名它的名称空间。

我认为这个问题有点复杂,因为根据我的经验,对于具有帐户、用户权限等的站点,您很少依赖静态/预创建的HTML页面

通常,这样的站点/应用程序依赖于某种“服务器页面”技术—ASP、JSP、PHP(或通过AJAX请求管理所有这些)—这将允许您编写类似于
的某种标记/服务器代码—当由服务器编译/解释时,将在页面中您希望的位置为您注入用户名

如果出于某种原因,您声称应用程序中并非如此,并向用户提供纯预创建的或静态的HTML,那么您确实必须执行以下操作之一:

1.检索用户名的AJAX请求

我认为你的论点是

这将不必要地增加复杂性和数量 网页点击率

是无效的。技术使用的正确性应优先于(可能不存在的)性能增益。我也不认为这会增加复杂性,相反,您可以将登录的“用户”部分分离到一个模块中,并在其他地方重用它

2.注入JavaScript(或使用元标记)


这一次我不完全确定你将如何做到这一点,并在那之后维护你的页面…

我认为这个问题有点复杂,因为根据我的经验,你很少依靠静态/预先创建的HTML页面来访问具有帐户、用户权限等的站点

通常,这样的站点/应用程序依赖于某种“服务器页面”技术—ASP、JSP、PHP(或通过AJAX请求管理所有这些)—这将允许您编写类似于
的某种标记/服务器代码—当由服务器编译/解释时,将在页面中您希望的位置为您注入用户名

如果出于某种原因,您声称应用程序中并非如此,并向用户提供纯预创建的或静态的HTML,那么您确实必须执行以下操作之一:

1.检索用户名的AJAX请求

我认为你的论点是

这将不必要地增加复杂性和数量 网页点击率

是无效的。技术使用的正确性应优先于(可能不存在的)性能增益。我也不认为这会增加复杂性,相反,您可以将登录的“用户”部分分离到一个模块中,并在其他地方重用它

2.注入JavaScript(或使用元标记)


这一次我不完全确定你会怎么做,然后再维护你的页面…

你的建议是完全正确的。例如,CoffeeScript、下划线.js和Backbone.js的创建者Jeremy Ashkenas建议在


Accounts.reset();
项目。重置(正确)%>);

你的建议完全正确。例如,CoffeeScript、下划线.js和Backbone.js的创建者Jeremy Ashkenas建议在


Accounts.reset();
项目。重置(正确)%>);

这两种方法中哪一种更可取,或者还有其他方法我应该考虑吗?< /P> 我认为没有一个正确的答案,当然在这个问题上我听到了很多相互矛盾的观点,但是从你提到的两种方法中选择,我会选择将值注入JavaScript,因为我发现这更容易

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

<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...

var dataFromServer={/*此处的所有服务器数据*/};
if(dataFromServer.someProperty){
//上面提供了一些属性,请对其进行处理。。。
}
等
这种方法还有一个额外的优点,即服务器端代码基本上只是生成JSON(如果直接包含在页面源代码中,它将成为一个对象文本),因此,如果您以后决定开始使用某种Ajax,您将几乎完全可以使用它