[英]How can I pass javascript variable to grails controller using remoteFunction
[英]How to pass JavaScript variable to g:remoteFunction “update” property?
我在JavaScript中有一个函数,该函数向Grails控制器中的方法提交消息,并同时使用myID id更新div。
function messageKeyPress(field,event,messageBox) {
...
var message = $('#messageBox').val();
<g:remoteFunction action="submitMessage" params="\'message=\'+message" update="myID"/>
...
}
我这样使用它:
<div id="chatMessages" class="chatMessages"></div>
<input type="text" id="messageBox" class="messageBox" name="message" onkeypress="messageKeyPress(this,event,'#messageBox');"/>
<div id="myID">
我希望该功能可重用,能够更新不同的div。
我试过了:
onkeypress="messageKeyPress(this,event,'#messageBox', '#myID');"
在JavaScript中:
function messageKeyPress(field,event,messageBox, myID) {
...
<g:remoteFunction action="submitMessage" params="\'message=\'+message" update="${myID}"/>
但这没有用。 我的问题是如何将JavaScript变量传递给Grails g:remoteFunction“更新”属性。
我建议您改用jQuery。 默认情况下,它捆绑在Grails项目中。 结果,您将在javascript代码和gsp视图逻辑之间得到清晰的区分。 例如,application.js可能如下所示:
(function($) {
$('.messageBox').on('keypress', function () {
...
var params = {message: $(this).val()};
var url = $(this).data('url');
var target = $(this).data('target');
$.post(url, params, function(response) {
$(target).html(response);
});
...
});
})(jQuery);
和您的视图文件:
<input type="text" id="messageBox"
class="messageBox" name="message"
data-url="${createLink(action: 'submitMessage')}"
data-target="#myId"/>
<div id="myID"></div>
您应该为要具有此事件侦听器的每个输入字段分配一个messageBox
css类。 在每个字段的data-target
属性中,您可以为应该更新的所有div指定一个选择器。
jQuery非常易于学习。 http://api.jquery.com/
update
属性应设置为要更新的元素的ID,而不是与此元素匹配的选择器。 换句话说,请尝试以下操作:
onkeypress="messageKeyPress(this,event,'#messageBox', 'myID');" // '#' removed from myID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.