远程功能上的参数不是grails 2.3.4

时间:2014-07-09 10:31:11

标签: javascript ajax grails

我正在使用grails 2.3.4并且根据grails文档,有<g:remoteFunction>${remoteFunction}。我正在尝试将值从params发送到控制器,但它返回null值请帮助代码是: gsp页面代码是:

<div id="test"></div>
    <input type="text" name="myname" id="myname">
<input type="button" name="view" value="view" onclick="myFunction()">

和javascript函数是:

function myFunction(){

        var name=$("#myname").val();        
        <g:remoteFunction controller="test" action="testreport" update="test" params="{n:name}"></g:remoteFunction>

    }

,控制器代码为

def testreport(){
        println"test"
println "params value is "+params.n
        println params
    }

,输出为:

test
params value is null
[action:testreport, format:null, controller:test]

2 个答案:

答案 0 :(得分:3)

我在gsp中以多种方式使用g:remoteFunction - 您可以使用:

    <button id=boxbtn onclick="<g:remoteFunction controller="Controller"   
action="action"   params="${[id:inputid, sortby:sortby, order:order, s:s,
  userchoice:'yes', viewtype:'na', offset:offset, max:max]}" update="siteContent"  />">

<强>更新 尝试使用它作为你的myFunction而不是你上面的那个

function myFunction(){
        var name = document.getElementById('myname');        
        <g:remoteFunction controller="test" action="testreport" update="test" params="${[n:name]}"></g:remoteFunction>

    }

答案 1 :(得分:1)

你搞砸了。在呈现视图时在服务器端执行。当浏览器在客户端执行Javascript时,您的Javascript变量name将具有值。您的代码中存在拼写错误。而不是

<g:remoteFunction controller="test" action="testreport" update="test" params="{n:name}"></g:remoteFunction>

使用

<g:remoteFunction controller="test" action="testreport" update="test" params='\'n=\' + name'></g:remoteFunction>

如果您有多个参数提交使用

<g:remoteFunction controller="test" action="testreport" update="test" params='\'n=\' + name&paramName=\' + varName\''></g:remoteFunction>