【问题标题】:How do you pass a JavaScript variable to your Groovy controller?如何将 JavaScript 变量传递给 Groovy 控制器?
【发布时间】:2013-08-07 01:40:28
【问题描述】:

我在 Google 上搜索了很长时间,但找不到解决此问题的方法。我正在尝试从我的 Groovy 控制器中的 GSP 文件中访问 JavaScript 变量,但我不知道如何执行此操作。

例子:

//JavaScript stuff
<script>
    function validateForm(){
         var ret = false
    }
</script>

//Groovy controller stuff
def myAction = {
    println params.ret
}

如何实现类似的效果?

【问题讨论】:

  • 你有没有尝试过(至少有会话)?
  • 我已经尝试过 remoteFunction 但我得到一个 java 脚本错误所以它可能工作但我不知道它的语法。这就是我在我的 javascript ${remoteFunction(controller: ActionsController, action:'ImplementNewPixel', params: 'ret')} 中拥有它的方式,但不,我还没有尝试过任何会话。您将如何使用会话?
  • 您应该能够使用 remoteFunction 传递变量。看看remoteFunction 中的参数传递方式。

标签: javascript grails gsp


【解决方案1】:

将变量传递给控制器​​的两种方式:

  1. Ajax
  2. 表单提交

Ajax

  • 使用remoteFunction

    ${remoteFunction(controller: 'actionsController' , action: 'implementNewPixel', params: '\'ret=\' + ret')} 
    
  • 使用 Ajax

    var ret = false;
    jQuery.ajax({
        url: "${createLink(controller: 'actionsController', action: 'implementNewPixel')}",
        data: "ret=" + ret,
        success: function (data) {
            alert(data);
        }
    });
    

等等

表单提交

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
    var ret;
    function validateForm(){
        ret = false;
    }

    jQuery(function () {
        jQuery("[name='jftForm']").submit(function () {
            jQuery("[name='ret']").val(ret);
        });
    });
</script>

<g:form name="jftForm" controller="actionsController" action="implementNewPixel">
    ...
    <g:hiddenField name="ret" value=""/>
    <g:submitButton name="submit" value="Submit"/>
</g:form>

【讨论】:

  • 我已经尝试了两种方法,但我仍然无法访问控制器中的变量。我可以通过在我的控制器中使用params.ret 来访问它吗?此外,当我尝试使用表单提交方法时,我收到一个 java 脚本错误,如 Uncaught ReferenceError: $ is not defined ImplementNewPixel:133 (anonymous function)
  • 在你的页面中包含 jQuery。
  • 好的。那解决了它。谢谢!
【解决方案2】:

看看documentaton

params: '\'ret=\' + ret'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多