将JavaScript函数值指定给Freemarker变量

将JavaScript函数值指定给Freemarker变量,javascript,freemarker,Javascript,Freemarker,我的Freemarker文件中有一个JavaScript函数,如下所示: <script type="text/javascript"> function myFunc(){ var myString = "I like pizza"; return myString; } </script> <#assign myVar = myFunc()> 我试图将myFunc中的myString返回值分配给Freemarker中的myVar

我的Freemarker文件中有一个JavaScript函数,如下所示:

<script type="text/javascript">
  function myFunc(){
    var myString = "I like pizza";
    return myString;
  }
</script>
<#assign myVar = myFunc()>
我试图将myFunc中的myString返回值分配给Freemarker中的myVar,如下所示:

<script type="text/javascript">
  function myFunc(){
    var myString = "I like pizza";
    return myString;
  }
</script>
<#assign myVar = myFunc()>
不幸的是,myVar的值是一个ampty字符串。 我做错了什么?

您试图从myFunc返回myString。您在哪里定义了myString? 它是否在myFunc的父范围内?如果不是,则有两种可能的情况

场景1:非严格模式-创建并返回一个新的myString变量,这可能是导致空字符串问题的原因! 场景2:严格模式-变量myString将作为未定义返回,这不是您的情况。 可能的解决方案-使用myFunc的父范围或当前范围中的某些值实例化变量

编辑


我担心freemaker模板会在服务器上编译。另一种解决方案是将整个freemaker调用站点包含在脚本标记中,这样它将基于客户端实例工作,如果您在编译到客户端浏览器中的scriptin之后需要该模板中的JavaScript。

FreeMarker在web服务器上运行,而JavaScript稍后在浏览器中运行。因此,您应该会遇到一个错误,FreeMarker抱怨说没有myFunc这样的东西。不知道如何在myVar中得到一个空字符串,相反,可能与此相关的还有一些疏忽,但无论如何,您试图做的都不会起作用。

我更新了问题,更正了myString的定义位置。谢谢你的回答并指出这一点!