我有简单的表格
<table class="datatable table table-striped table-bordered" id="usertable">
<thead>
<th>Name</th>
<th>Surname</th>
<th>Username</th>
</thead>
<tbody>
</tbody>
</table>
这是我的javascript代码。我想向Spring控制器发送ajax请求并返回数据。
$(function() {
$('.datatable').dataTable({
"sPaginationType": "bs_full",
"sAjaxSource" : "loadusers.html",
"aoColumns" : [
{
"sTitle" : "Name",
"mData" : "name"
},
{
"sTitle" : "Surname",
"mData" : "surname"
},
{
"sTitle" : "Username",
"mData" : "username"
}
]
});
$('.datatable').each(function(){
var datatable = $(this);
var search_input = datatable.closest('.dataTables_wrapper').find('div[id$=_filter] input');
search_input.attr('placeholder', 'Search');
search_input.addClass('form-control input-sm');
var length_sel = datatable.closest('.dataTables_wrapper').find('div[id$=_length] select');
length_sel.addClass('form-control input-sm');
});
});
在我的spring控制器中,我返回这样的数据
@RequestMapping("/loadusers.html")
@ResponseBody
public String test(Model model) {
//get list of users
//get list of logins for users
logger.debug("TRY TO RETURN AJAX RESPONSE");
return "{ \"name\" : \"name1\", \"surname\" : \"surname1\", \"username\" : \"username1\" }";
}
但它不起作用,我有解析错误。
有什么问题?
答案 0 :(得分:0)
我改变了几件事,现在它运作得很好
的Javascript
$('.datatable').dataTable({
"sPaginationType": "bs_full",
"bProcessing" : true,
"sAjaxSource" : "loadusers.html",
"sAjaxDataProp" : "test"
});
控制器
@RequestMapping("/loadusers.html")
@ResponseBody
public String test(Model model) {
logger.debug("TRY TO RETURN AJAX RESPONSE");
return "{ \"test\": [ "
+ "[ \"name1\", \"surname1\", \"username1\"],"
+ "[ \"name2\", \"surname2\", \"username3\"],"
+ "[ \"name2\", \"surname2\", \"username3\"]"
+ "] }";
}
答案 1 :(得分:0)
您可能对Jackson mapper感兴趣,而不是返回一串json。通过设置
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"/>
</property>
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
</list>
</property>
</bean>
然后您可以将直接转换为json的对象返回
@RequestMapping("/loadusers.html")
@ResponseBody
public String test(Model model) {
// Compose your dataTable object
return dataTable;
}
显然杰克逊应该进口。随着maven
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.9</version>
</dependency>