将JavaScript函数值指定给Freemarker变量
我的Freemarker文件中有一个JavaScript函数,如下所示:将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
<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的定义位置。谢谢你的回答并指出这一点!