[英]How to call only method of a grails controller with JavaScript file?
[英]Grails javascript call controller method
在grails视图中,我需要调用javascript方法来获取一些信息,因此我需要执行以下提交操作:
<input type="submit" name="submit" class="submit action-button" value="Generar" onclick="generateReport()" style="float: right" />
并且在generateReport()的结尾,我需要调用/重定向到Controller的show
动作(因为我已经在create
动作上)
我已经尝试过
1) var jSon = generateJSON();
<g:remoteFunction controller="report" action="show" params="[data:jSon]" />
2) var jSon = generateJSON();
<g:remoteFunction controller="report" action="show" params="[data:${jSon}]" />
1)数据为空2)编译错误:
org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException
Message
Attribute value quote wasn't closed (controller="report" action="show" params="[data:${jSon}]").
由于var jSon是一个javascript变量,因此无法将var json作为params分配给数据。 params属性中的数据需要来自控制器的模型参数。
在第一个选项中,将其分配为参数时,因为它不是控制器的模型参数,因此显示为null 。
第二个选项不起作用,因为这不是从控制器定义模型参数的方法,因此会产生编译错误 。
因此,您最好尝试从控制器获取jSon作为模型,然后将其定义为params。
或者,您可以点击此链接在onclick自身中定义g:remoteFunction
http://grails.github.io/grails-doc/2.2.1/ref/Tags/remoteFunction.html
希望这可以帮助! 谢谢。
remoteFunction
标记不适用于您的情况,因为在知道jSon的值(客户端) 之前 ,它已呈现为html和JavaScript(服务器端)。
您必须自己进行ajax调用(例如,jQuery)。
你可以试试这个
像这样在您的gsp中声明一个变量。
<script type="text/javascript">
var yourVariable = "${createLink(url: [controller: 'yourController', action: 'yourAction'])}";
</script>
然后在您的js文件中..您可以使用ajax。
示例ajax
function checkUsernameAvailable(user, example){
$.ajax(
{
url: yourVariable, <- this variable take from your gsp
contentType:"text/json",
type: "get",
data: ({ id: usernamenya}),
dataType: "json",
cache: false,
async: false,
success: function(data) {
//do something here
},
error: function(xhr) {
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.