我正在使用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]
答案 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¶mName=\' + varName\''></g:remoteFunction>