服务器端数据表回调处理程序 v 1.10
2014-10-01
2187
我使用 datatables 版本 1.10.0 来实现搜索功能。
我想知道对于服务器端处理,我该如何操作响应。 例如,我有一个 json 响应,它返回要显示的记录和状态。
我的要求是,如果服务器端验证失败,我不想绘制表格,而是在屏幕上呈现错误消息。否则绘制表格。
以下是简单示例:
$('#result').dataTable( {
"processing": true,
"serverSide": true,
"ajax": {
"url": "search",
"type": "POST",
//"dataSrc": "resultList",
"dataSrc": function ( json ) {
if (json.responseStatus.value == 'Validation Failure') {
//show error messages on screen
//prevent redraw
} else {
//draw the table with the resultList
}
}
"columns": [
{ "data": "referenceNumber"},
{ "data": "fileName" },
{ "data": "documentType" },
{ "data": "uploadType" },
{ "data": "createdBy" },
{ "data": "memberName" },
{ "data": "dateOfBirthStr"},
{ "data": "createdDateStr" },
{ "data": "comment" },
{ "data": "status" }
]
} );
更新: 在服务器端我返回 403:
return new ResponseEntity(searchUploadResponse, HttpStatus.FORBIDDEN);
在客户端:
$('#result').dataTable( {
"processing": true,
"serverSide": true,
"ajax": {
"url": "search",
"type": "POST",
"dataSrc": "resultList",
error: function (jqXHR, textStatus, errorThrown) {
//handle errorThrown in here
alert("error" + jqXHR + " : " + textStatus + " : " + errorThrown);
}
} ,
结果是我可以显示我的错误消息。 datatables 使用“处理”div 阻止对表的访问。
1个回答
我会在 json 文件上返回不同的状态代码,而不是
200
Success
状态,因此数据表不会加载任何数据。
然后,我可以使用
.ajaxError()
捕获错误代码,并在出现该错误代码时执行我想要执行的操作。
例如,您可以返回
503
代码状态,然后在与数据表相同的页面上,您可以执行以下操作:
$("#result").ajaxError(function(event, jqxhr, request, settings){
if(jqxhr.status == 503) alert("Validation Failure");
});
因此您可以处理该事件,因为如果数据表没有从服务器收到 200 状态代码响应,它将会空白。
Control Freak
2014-10-01