JQuery 数据表分页,缓存"下一步"按钮仅在第一页上工作



大家早上好,

只想首先感谢大家的时间和帮助!

我在S.O.和DataTables论坛(后者,主要是DataTables的"遗留"版本中)上看到过许多帖子,讨论这个问题并最终将其标记为"已解决",因此我知道通常提出的解决方案。换句话说,据我所知,这不是重复的。

问题是这样的:DataTables服务器端分页,客户端页面缓存,有一个不起作用的"下一步"按钮。分页本身工作正常,缓存工作正常,进出服务器的数据也很好。"上一个"按钮工作正常,单击页码在表格页面之间导航在显示数据方面工作正常。

建议的标准解决方案是确保JSON响应在"recordsTotal"和"recordsFiltered"参数中设置正确的值。但是,我可以确认,在我的情况下,两者确实是相同的值,没有过滤掉任何记录。

表的初始加载显示正确的计数和数据,如第一个屏幕截图所示。

第二个屏幕截图是单击"下一步"按钮一次后表格的外观。请注意标签"显示 533 条记录中的 0、101 到 533"。如果我此时单击上一个按钮,它将工作并正确显示第一页。如果我使用页面按钮导航到任何其他页面,下一个按钮将完全停止工作,而上一个按钮将继续起作用。

第三个屏幕截图说明了表格"应该"的外观,以及如果我只单击导航中的"2"页,它的实际外观。

我什至不确定在哪里查看,因为我控制的所有变量似乎都设置正确。看起来JQuery/DataTables代码中的某些东西是连接两个字符串而不是添加两个整数。我想也许这发生在流水线/缓存代码中,但我无法找到源代码,或者我只是不明白它是如何算术运行的......

缓存的设置方式是,它将在客户端中保留 50 条记录,一次将它们加载 10 条到表中。当对服务器的调用发生时,每次我们超过阈值时都会获取"下一个"或"上一个"50。

如果相关,我用于缓存的代码是对 DataTables 在 https://datatables.net/examples/server_side/pipeline.html 提供的示例代码的轻微修改。尽管我会注意到,当我在表上禁用缓存时,问题根本没有改变。

所以......如果有人知道我应该在哪里寻找线索或解决方案,您的帮助将不胜感激!

[![Screen1][1]][1]
[![Screen2][2]][2]
[![Screen3][3]][3]

[1]: https://i.stack.imgur.com/2pzup.png
[2]: https://i.stack.imgur.com/qykJC.png
[3]: https://i.stack.imgur.com/W2Pu6.png

编辑:很抱歉屏幕截图未显示的方式。由于某种原因,我无法以默认呈现的方式提交它。验证一直告诉我,我的提交中有"代码未格式化为代码"。谢谢!

好吧,尽管这是糟糕的形式(糟糕的表演,糟糕的表演),我已经找到了我自己问题的答案。请记住,在首先提出问题之前,我已经花了几个小时来解决这个问题=)...

无论如何,发生的事情是在 DataTable 初始化期间从"字符串"类型转换为"数字"类型失败(所以当我说发生串联时,我接近答案)。我的代码将"10"作为表的显示长度传递给数据表代码。显然,内部没有发生转换(也就是说,DataTables 没有努力将参数转换为数字),这让我感到惊讶,但首先做出这个假设仍然是我的错。

如果有更清晰的解释,请随时分享=)。

谢谢大家!

最新更新