无法通过系统间缓存服务器方法设置变量值

时间:2018-09-08 15:19:08

标签: javascript intersystems-cache objectscript

当我使用Javascript做系统间缓存服务器页面时遇到了一个问题。

这是我的示例代码:

情况1:

<script language="Javascript">
function test1(){
  var val = 0;
  #server(..Set())#;
  alert(val);
}
</script>
<script language="Cache" method="Set">
Write "val = 50;"
</script>

在这种情况下,当调用函数test1()时,该值= 0,它是一个局部变量。

情况2:

<script language="Javascript">
function test1(){
  #server(..Set())#;
  alert(val);
}
</script>
<script language="Cache" method="Set">
Write "val = 50;"
</script>

在这种情况下,当调用函数test1()时,val = 50,并且值现在是全局变量。

所以我的问题是:

  1. 如何通过“缓存服务器方法”成功设置案例1中的值?
  2. 为什么缓存服务器方法可以在Javascript中声明全局变量,但不能为变量设置值?

2 个答案:

答案 0 :(得分:2)

您不能只通过这种方式在服务器端生成javascript代码。您可以从此方法返回一个值,然后将其返回Javascript。

<script language="Javascript">
function test1(){
  var val = #server(..Set())#;
  alert(val);
}
</script>
<script language="Cache" method="Set">
 quit 50
</script>

答案 1 :(得分:1)

实际上,您可以通过这种方式设置变量,但是它必须在全局范围内,而不是在函数范围内。如果从函数中删除var val=0;,它将正常工作。最好只返回值,而不要使用硬编码的变量名,以避免范围界定,重复命名等问题。