Jquery 服务器端datatables v 1.10的回调处理程序

Jquery 服务器端datatables v 1.10的回调处理程序,jquery,datatable,Jquery,Datatable,我使用datatables版本1.10.0来实现搜索功能 我想知道对于服务器端处理,如何操作响应。 例如,我有一个json响应,它返回要显示的记录和状态 我的要求是,如果服务器端出现验证失败,我不想绘制表,而是在屏幕上呈现错误消息。否则画桌子 下面是一个简单的例子: $('#result').dataTable( { "processing": true, "serverSide": true, "ajax": { "u

我使用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:

返回新的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使用“processing”div阻止对表的访问。

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

然后,我可以使用捕获错误代码,并在错误代码出现时执行我希望执行的操作

例如,您可以返回
503
code状态,然后在与datatabes相同的页面上执行以下操作:

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

因此,您可以处理该事件,因为如果datatables没有从服务器获得200状态码响应,它将清空。

感谢您的响应。我希望将我的条件设置为响应状态,而不是http状态代码。原因是,我的webapp需要支持IE8+。如果我返回的状态代码不是200,浏览器可能会覆盖我的更改。如果这是您要求的,您还可以获取响应状态文本,这些都在
jqxhr
对象中公开。请参见此处:另外,如果要返回
200
状态,您将希望使用
$.ajaxSuccess()
而不是
$.ajaxError()
,用法与我的响应中的示例相同。请参见此处:我可以获取响应状态值。这是我想要解决的条件中的逻辑。我想控制何时允许datatables重新绘制/刷新表。返回正确的http状态代码并使用错误回调是一个有效的解决方案。我还是希望按自己的方式处理