繁体   English   中英

混合使用javascript和内联服务器代码

[英]Mixing javascript and inline server code

我正在尝试执行以下操作:

   <script>
      var documentId = %(this).attr('id');

      <% int docId = %>documentId<%;%>

   </script>

如您所见,我正在尝试创建一个新的服务器变量,但是要分配javascript变量的值。 或至少评估javascript变量。 (这是我试图解决的现实世界问题的一个简单例子)我有什么方法可以做到这一点?

问题:

  1. 在将任何内容传输到客户端之前 ,在服务器上评估服务器端代码。
  2. 在服务器完成文档传输后 ,在浏览器中评估客户端代码(JavaScript)。

在理解了上述陈述之后,您将看到您当前的示例在技术上是不可能的。

您需要做的(如果您的目标是阻止页面刷新)是使用AJAX将新数据发送到服务器上的脚本。 该脚本将处理数据并响应浏览器。

在呈现页面之前,将首先处理服务器代码。 因此,您必须使用类似AJAX的东西将JavaScript值传递回服务器。

由于服务器代码为对象提供了@id,因此服务器应该在创建时就知道它。 但不,你不能像这样交错客户端和服务器 - 它们在时间和地理上不相交

您无法执行此操作,因为已经计算了服务器变量,并且在客户端脚本运行时已生成HTML。

服务器端代码运行=>生成的HTML文件服务器到浏览器=> Javascript代码运行

这个过程是单向的,所以没有办法在不使用Ajax请求的情况下返回该变量。

但是,如果您只需要id,并且控件是.NET控件,则只需使用myControl.ClientID值即可。

要将数据从浏览器发送到服务器,您应该使用表单控件(文本字段,隐藏字段,文本区域,复选框等)或ajax。 在您的情况下,您可以将javascript对象序列化为字符串,并通过隐藏字段或XmlHttpRequest将其传递给服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM