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 对对象列表进行排序