我正在尝试执行以下操作:
<script>
var documentId = %(this).attr('id');
<% int docId = %>documentId<%;%>
</script>
如您所见,我正在尝试创建一个新的服务器变量,但分配 javascript 变量的值。或者至少评估 javascript 变量。(这是我试图解决的现实世界问题的一个简单示例)有什么办法可以做到这一点吗?
我正在尝试执行以下操作:
<script>
var documentId = %(this).attr('id');
<% int docId = %>documentId<%;%>
</script>
如您所见,我正在尝试创建一个新的服务器变量,但分配 javascript 变量的值。或者至少评估 javascript 变量。(这是我试图解决的现实世界问题的一个简单示例)有什么办法可以做到这一点吗?
问题:
在理解了上述陈述之后,您会发现您当前的示例在技术上是不可能的。
您需要做的(如果您的目标是防止页面刷新)是使用 AJAX 将新数据发送到服务器上的脚本。该脚本将处理数据并响应浏览器。
在呈现页面之前,服务器代码将首先得到处理。因此,您必须使用 AJAX 之类的东西将 JavaScript 值传回服务器。
由于是您的服务器代码为对象提供了@id,因此服务器应该在创建时就已经知道它。但是不,您不能像那样交错客户端和服务器 - 它们在时间和地理上不相交
您不能这样做,因为在客户端脚本运行时已经计算了服务器变量并且已经生成了 HTML。
服务器端代码运行 => 生成的 HTML 文件提供给浏览器 => Javascript 代码运行
这个过程是单向的,所以没有办法在不使用 Ajax 请求的情况下返回该变量。
但是,如果您只需要 id,并且控件是 .NET 控件,则可以简单地使用 myControl.ClientID 值。
要将数据从浏览器发送到服务器,您应该使用表单控件(文本字段、隐藏字段、文本区域、复选框等)或 ajax。在您的情况下,您可以将 javascript 对象序列化为字符串并通过隐藏字段或 XmlHttpRequest 将其传递给服务器。