Groovy/grails 如何使用 jquery 从视图中调用控制器方法

Posted

技术标签:

【中文标题】Groovy/grails 如何使用 jquery 从视图中调用控制器方法【英文标题】:Groovy/grails how to call controller method from view using jquery 【发布时间】:2013-07-07 07:03:27 【问题描述】:

我有一个 Groovy/Grails 项目,其中有一个视图,它的控制器向其渲染了一些数据,比如控制器称为 MyController,而我要渲染的数据称为 $myData。我的观点的相关部分如下所示:

<head>
    $('#refreshData').click(function()
        //here I want to run the method in my controller and update the value of myData
    );
    ...
</head>    

<body>
    ...    
    <input type="text" id="inputData" />
    <button id="refreshData">Submit</button>
    ...
</body>

我的控制器有一个接收字符串类型参数的动作(它应该从输入表单接收它)

def updateData(String input) 
    //updating input
    [myData: return_value]

我想从我的 jquery 函数中调用操作 updateData,方法是为本地 js 变量分配该函数的返回值,或者将变量呈现到我的视图并访问它。我试着打电话

var newData = $
    remoteFunction(
        controller: 'my', 
        action: 'updateData', 
        params =[string_from_form]
    );

但我收到错误 groovy.lang.MissingMethodException 并带有表单消息

方法 的签名不适用于值(java.util.LinkedHashMap、java.util.ArrayList)值:[[controller:my...

谁能告诉我如何使用我的参数从那个 jQuery 函数调用控制器方法?

【问题讨论】:

【参考方案1】:

看起来您的代码的参数部分可能存在错误。试试:

var newData = $remoteFunction(controller: 'my', action: 'updateData', params: '[string_from_form]');

【讨论】:

谢谢。这确实是问题所在,但我求助于 $.post("$createLink(controller:..., action:...), param1:..., function(data)=..." )。看起来更像 js。【参考方案2】:

你想要params: 而不是params =

【讨论】:

以上是关于Groovy/grails 如何使用 jquery 从视图中调用控制器方法的主要内容,如果未能解决你的问题,请参考以下文章

groovy grails构建测试数据(buildtestdata插件)如何创建多对多

Groovy/Grails:如何按 id 对对象列表进行排序

如何在 groovy/grails 中为嵌套对象创建标准?

在 Groovy/Grails 中使用 JSON 创建对象

在 Grails 中使用 Groovy-Eclipse 插件进行开发

使用 Groovy(Grails) 写入文件对于某些行(断行)失败