1

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

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

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

   </script>

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

4

5 回答 5

4

问题:

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

在理解了上述陈述之后,您会发现您当前的示例在技术上是不可能的。

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

于 2011-01-31T16:08:28.867 回答
0

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

于 2011-01-31T16:08:07.840 回答
0

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

于 2011-01-31T16:08:54.493 回答
0

您不能这样做,因为在客户端脚本运行时已经计算了服务器变量并且已经生成了 HTML。

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

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

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

于 2011-01-31T16:08:55.070 回答
0

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

于 2011-01-31T16:16:10.847 回答