服务器端数据表v 1.10的回调处理程序

时间:2014-10-01 00:27:51

标签: jquery datatable

我正在使用数据表版本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:

返回新的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使用"处理"阻止对表的访问。格。

1 个答案:

答案 0 :(得分:1)

我会在json文件上返回不同的状态代码而不是200 Success状态,因此数据表不会加载任何数据。

然后,我可以使用.ajaxError()捕获错误代码,并在出现错误代码时执行我想要执行的操作。

例如,您可以在与数据对象相同的页面上返回503代码状态,您可以执行以下操作:

$("#result").ajaxError(function(event, jqxhr, request, settings){
   if(jqxhr.status == 503) alert("Validation Failure");    
});

因此,您可以处理该事件,因为如果数据表没有从服务器获得200状态代码响应,那么它将被删除。