在我的应用程序中使用
<g:link params=[:] />
params显示在我不想要的URL中。 无论如何发送params而没有像我们通过POST方法那样在URL中显示?
谢谢
答案 0 :(得分:3)
g:link是一个用于创建链接的标记,当您通过表单提交数据时,没有使用POST参数链接,POST和GET(和其他人一样)methods可用ajax请求。
取决于您可以生成ajax调用或执行此操作的表单的上下文。
<g:form controller="myController" action="myAction">
<g:hiddenField name="myField" value="myValue" />
<g:submitButton name="Submit" value="Submit" class="lnk" />
</gform>
答案 1 :(得分:1)
<g:link class="btn btn-success" id="class.id" onclick='UsingPost();'>SOME LABLE HERE </g:link>
<script type='text/javascript'>
function UsingPost(){
jQuery.ajax({
type:'POST',
data:{"model":${pleaseUseTheModelyouHaveLoaded}"},
url:'${createLink(action: 'save')}',
success:function(data,textStatus){
jQuery('#success').html(data);},
error:function(XMLHttpRequest,textStatus,errorThrown){}
});
}
</script>
答案 2 :(得分:0)
<g:link></g:link>
变为<a href=""></a>
,因此传递给glink的任何参数将始终在URL中可用。
如果你不想在网址中,那么你将不得不使用一个表格。
答案 3 :(得分:0)
最简单的方法是使用jquery:
<g:link id="my_link">This is my link</g:link>
<script type='text/javascript'>
$('#my_link').click(function() {
$.post('/url_for_post_request');
});
</script>
Grails中还有remoteLink功能,但已弃用,因此最好避免使用此功能。
另一种选择是使用表格。重要的是,您可以在某个地方定义表单,并在网站的任何位置放置提交按钮 - 您只需使用form
的{{1}}属性:
g:actionSubmit
和<g:form method="post" action="..." name="form-name">...</g:form>
:
g:actionSubmit
答案 4 :(得分:0)
您可以将<g:link params=[:] />
发送给控制器/操作,然后在操作中进行重定向。
<g:link action="formSubmit" params="[id:3]">send</g:link>
class TestController {
def index() {
}
def formSubmit(Long id) {
// you can use the id param, or add it to flash scope
redirect action: "index"
}
}
因此id参数不会显示在生成的URL中。