在同一页面中加载的 javaScript 文件中使用 gsp 布局声明变量

Using gsp layout declared variable in javaScript file that is being loaded in the same page

我最近开始学习 grails,我正在尝试使用在页面布局中声明的 gsp 变量:

<g:set var="abtestType" value="newSearchBar" />

在同一页面加载的js文件中。我尝试过的事情:

 alert(${abtestType});  
 alert(<%=abtestType%>);
 alert("abtestType:"+abtestType);

但它显示错误为未定义的变量。可能我试图以错误的方式获取它,需要这方面的帮助。

Even thinking about doing so neither makes sense nor applicable.

这样声明的原因是,当 gsp 页面呈现到 html 页面时,它会用适当的 html 标签或值替换 grails 标签。同样,它将 ${}<%%> 替换为 html 或 javascript 或前端发生的任何内容。

因此,如果您在 gsp 本身中有那些 javascript 代码行,那么您尝试过的代码可能工作正常,但正如您调用的外部化 js 文件,它实际上对 gsp 或jsp 或任何其他语言的前端支持。

一种方法是在 javascript 中使用 global variable。例如

在上面声明 abtestType,如下所示:

<script>
var abtestType = "${abtestType}"
</script>

现在您可以访问 javascript 中的全局变量 abtestType

在您的 javascript 中使用它,但请记住,如果调用使用它的代码,现在您需要拥有此变量,否则您会得到非常相同的错误,即 variable is not defined

我在这个 post 中发现了另一种方法,但实际上是一种操纵。

Is there any analogue in Javascript to the __FILE__ variable in PHP?

此外,另一个不错的链接是

Pass vars to JavaScript via the SRC attribute

希望对您有所帮助!