我正在我的grails应用程序中实现搜索功能,我目前在一个表单中有少量搜索字段,提交到grails控制器中的search
函数,并将结果呈现在{{1}我现在在我的页面中有第二部分,这将是另一个字段集合,现在也将在搜索功能中使用,尽管这些字段不包含在第一个表单中,并且不能归因于定位在页面上,因此提交表单根本就不够。
我尝试在收集所有字段后使用ajax手动调用grails控制器中的search.gsp
函数,但这只是返回一个html响应而不是实际导航用户search
处理此问题的最佳方法是什么,因为我觉得ajax不是异步的最好方法?
...编辑
我所拥有的是 -
search.gsp
当我点击按钮时,我想对这些项目进行一些处理,以便建立一个整洁的有效负载,结构以搜索服务可以轻松使用数据的方式,最后将数据发送到{控制器中的{1}}函数,最终使用结果呈现<g:form name="form1" method="POST" url="[action:'search', controller:'someController]">
...some fields
</g:form>
<g:form name="form2" method="POST" url="[action:'search', controller:'someController]">
...some more fields
</g:form>
<div class="button">Click me</div>
。
答案 0 :(得分:1)
A)您可以忽略表单并直接从输入字段获取数据,并使用ajax请求发送它,如:
$(function(){
$('.button').click(function(){
var field1 = $('#inputfield_1_of_form_1').val();
var field2 = $('#inputfield_1_of_form_2').val();
//send fields to server
$.post("path", { field1: field1, field2:field2 }, function(data){
//do something with the return data from the server
}
});
})
然后,您可以使用
重定向用户(并将搜索结果作为属性发送)window.open('url to open','window name','attribute1,attribute2')
B)或者您可以先重定向用户,并将表单字段作为属性提供给search.gsp页面,然后处理搜索。
C)或者你可以在绑定到提交按钮的表单中添加隐藏字段,并使用jquery的.change()方法直接在第二个表单的隐藏字段中写入写入第一个表单字段的内容