【问题标题】:Groovy/grails how to call controller method from view using jqueryGroovy/grails 如何使用 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 函数调用控制器方法?

【问题讨论】:

    标签: jquery grails


    【解决方案1】:

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

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

    【讨论】:

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

    你想要params: 而不是params =

    【讨论】:

      猜你喜欢
      • 2013-08-26
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多