如何在Javascript中传递或使用GSP中的变量

时间:2017-03-26 18:33:56

标签: javascript grails gsp

我的grails gsp文件中有以下行。

    <div class="pagination">
        <g:paginate total="${lotCount ?: 0}" />
    </div>

我想将 lotCount 值传递给我的一个名为area-switcher.js的javascript文件,以便进一步使用它。我怎么能这样做?

我试图引用How to pass a value directly from a controller to a javascript file in Grails中的一条建议 我在下面的gsp中的位置

<g:javascript> var theId = ${lotCount} </g:javascript>

并在我的js文件中尝试以下测试

alert(theId);

但它不起作用。 得到了像ReferenceError这样的错误:未定义theId。 请帮忙。

2 个答案:

答案 0 :(得分:0)

使用hiddenField:

<g:hiddenField name="lotCount" value="${lotCount}" />

<div class="pagination">
    <g:paginate total="${lotCount ?: 0}" />
</div>

答案 1 :(得分:0)

您的解决方案应该有效。

确保在生成的html页面行的源代码

<g:javascript> var theId = ${lotCount} </g:javascript>

位于之前的行,其中包括area-switcher.js

<script type="text/javascript" src="area-switcher.js">

除此之外,还有两个选项可以将.gsp中的某些值传递给javascript文件(示例使用jQuery):

  1. 使用数据属性。例如,
  2. gsp(这里可以使用div,span,input,其他标签):

    <div id="countElem" data-count="${count}">
    

    js(这里使用jQuery):

    var count = $("#countElem").data('count');
    
    1. 正如另一条评论中所提到的,使用隐藏字段:
    2. GSP:

      <g:hiddenField name="countElem" data-count="${count}"/>
      

      js(这里使用jQuery):

      // hidden field will have name and id equals to countElem
      var count =  $("#countElem").val();