jQuery DataTables显示ESC打印后的处理消息

时间:2016-06-30 09:56:18

标签: datatables

在打印功能期间按下ESC后,我似乎无法摆脱想要显示的Processing消息。我使用的是1.10.11。我不想完全删除消息,我希望它在表的加载过程中显示。

2 个答案:

答案 0 :(得分:0)

当客户端正在等待服务器响应AJAX请求时,会出现 Processing ... 消息。打开然后打开打印件(使用ESC键)时,服务器必须将数据重新发送到客户端。

服务器端处理类别下DataTables网站上的第一个FAQ是

  

问:它不起作用......(坚持处理

     

答:这通常归结为从服务器传回的不正确的JSON数据。有关如何调试和解决此问题,请参阅this technical note

总结一下技术说明中的内容,基本上这个想法是服务器请求的JSON没有正确发送回来。要么格式中存在轻微错字/错误,要么您忘记了某些字段。如果这不是您的问题,那么下一个FAQ问题就是

  

Q值。它还没有用......

     

一个。服务器端处理不起作用的下一个最常见原因是draw变量未按请求中的设置返回。 DataTables使用draw来保持绘制计数,因此这是一个重要参数。请参阅server-side usage

该页面概述了需要在JSON中发送哪些数据的详细信息,但最重要的一点是draw选项。文档中的描述(对于从客户端发送到服务器的绘制参数)是:

  

画出反击。 DataTables使用它来确保从服务器端处理请求返回的Ajax是由DataTables按顺序绘制的(Ajax请求是异步的,因此可以不按顺序返回)。这用作绘制返回参数的一部分。

并且返回draw参数是

  

此对象作为响应的绘制计数器 - 来自作为数据请求的一部分发送的draw参数。请注意,出于安全原因,强烈建议您将此参数转换为整数,而不是简单地回显客户端在draw参数中发送的内容,以防止跨站点脚本(XSS)攻击。

总结一下:您应该检查的第一件事是您发送到服务器和从服务器发送的JSON格式正确并且没有错误。该插件的作者建议JSONLint调试您的JSON。如果您的JSON格式正确并且没有错误,那么接下来要考虑的是draw参数;确保每个对服务器的请求都使用新的draw值,并且服务器在返回数据时发回匹配的draw参数。

另外,如果您仍然遇到JSON问题,我建议您查看上面链接的这两个文档,因为它们非常详细,并准确描述了所需内容。

免责声明:如果您没有使用服务器端处理,这一切都没有用,但由于对于服务器端处理用户来说这是一个常见问题,我认为可以安全地假设您是

修改:查看this forum post Allan Jardine(插件创建者)在打印完成时提到服务器端请求的位置。这是有道理的,因为处理标记出现在发送ajax请求和收到ajax响应之间。

答案 1 :(得分:0)

我修改了_fnPrintEnd函数中的dataTables.tableTools.js文件,如下所示:

 var that = this;
    var oSetDT = this.s.dt;
    var tbl = this.s.dt.nTable.id;
    $("#" + tbl + "_processing").css("visibility", "hidden");
    var oSetPrint = this.s.print;
    var oDomPrint = this.dom.print;

添加了处理隐藏命令。