我是 play 框架的新手,我有一个关于实现 ajax 的问题。所以我实现了一个搜索页面——上面有一个发送日期范围的表单。这一切都在起作用。但我想让它与 ajax 一起工作,所以我有几个问题。我需要在控制器中创建一个新的表单类型吗?就像我以前做过的那样?或者我可以手动获取数据吗?
所以目前在我的html中,我有以下形式:
<form action="@routes.History.search()" class="pull-right" id="formHistory">
MinDate: <input id="mindate" name="mindate" class="input-small" type="text">
MaxDate: <input id="maxdate" name="maxdate" class="input-small" type="text">
<button class="btn" type="submit">Search</button>
</form>
这是我的javascript:
$('#formHistory').submit( function(evt) {
$('#errors').show();
$.ajax({
type: 'POST',
url: jQuery("#formHistory").attr("action"),
data: jQuery("#formHistory").serialize(),
dataType: "json",
success: function(data) {
alert('History Search');
$("tableHistory").find("tr:gt(0)").remove();
alert(data.id[0].source);
},
error: function(data) {
$('#errors').shows();
alert('History search failed');
}
});
return false;
});
在我的 history.java 文件中,我需要获取 json 信息。以前我已经通过使用
Form<Login> loginForm = form(Login.class).bindFromRequest();
但是我没有最小和最大日期的对象,我可以手动获取 json 信息吗?
public static Result search() {
//So here I would like to get the form information
}
下一个问题是如何反向执行此操作?一旦我得到最小和最大日期,从数据库中获取信息,我需要发回响应。我应该发回带有数据列表的 json 响应以及如何在 javascript 中处理它?还是我在服务器上创建 html 并将其作为字符串发送并将其附加到适当的元素中?或者我在一些演示中看到的另一个选项是创建一个视图并将其传回并只渲染较小的视图