在打印功能期间按下ESC后,我似乎无法摆脱想要显示的Processing消息。我使用的是1.10.11。我不想完全删除消息,我希望它在表的加载过程中显示。
答案 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;
添加了处理隐藏命令。