热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

解决BootstrapDataTableAjax请求重复问题

在最近的一个项目中,我们使用了JQueryDataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。

在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。

下面是查询按钮的代码。首先检查是否已经存在DataTable,如果存在,则先销毁再重新创建。

  1. function search(data) {
  2. var $searchResult = $("#search-result .result-panel");
  3. if (resultDataTable) {
  4. resultDataTable.fnClearTable(false);
  5. $searchResult.dataTable().fnDestroy();
  6. $("#resultList").empty();
  7. } else {
  8. $searchResult.show();
  9. }
  10. resultDataTable = $searchResult.dataTable({
  11. "bPaginate": true,
  12. "bAutoWidth": false,
  13. "bProcessing": true,
  14. "bFilter": false,
  15. "bJQueryUI": true,
  16. "sPaginationType": "full_numbers",
  17. "oLanguage": { //汉化
  18. "sLengthMenu": "每页显示 _MENU_ 条记录",
  19. "sZeroRecords": "没有检索到数据",
  20. "sInfo": "当前数据为从第 _START_ 到第 _END_ 条数据;总共有 _TOTAL_ 条记录",
  21. "sInfoEmpty": "没有数据",
  22. "sProcessing": "正在加载数据...",
  23. "oPaginate": {
  24. "sFirst": "首页",
  25. "sPrevious": "前页",
  26. "sNext": "后页",
  27. "sLast": "尾页"
  28. }
  29. },
  30. "bServerSide": true,
  31. "sServerMethod": "POST",
  32. "sAjaxSource": "${baseUrl}/zpzxResumeSearch.do?&method=",
  33. "fnServerParams": function(aoData) {
  34. aoData.push({"name": "conds", "value": data});
  35. },
  36. "aoColumns": [
  37. { "mData": null },
  38. { "mData": "name" },
  39. { "mData": "sex" },
  40. { "mData": "birthday" },
  41. { "mData": "mobilePhone" },
  42. { "mData": "diploma" },
  43. { "mData": "workYears" },
  44. { "mData": "currentAddress" },
  45. { "mData": "hukouAddress" },
  46. { "mData": "updateTime" },
  47. { "mData": null }
  48. ],
  49. "aoColumnDefs": [
  50. {
  51. "aTargets": [ 1 ],
  52. "mRender": function(data, type, full) {
  53. return "'>" + data + "";
  54. }
  55. },
  56. {
  57. "aTargets": [ 0 ],
  58. "mRender": function(data, type, full) {
  59. return "";
  60. }
  61. },
  62. {
  63. "aTargets": [ 10 ],
  64. "mRender": function(data, type, full) {
  65. return buildLink(data, type, full);
  66. }
  67. }
  68. ]
  69. }

通过跟踪Datatable的源码发现,在执行

  1. resultDataTable.fnClearTable();

方法时,实际调用了一次fnDraw方法,该方法会触发Ajax请求。而在DataTable的_fnInitialise方法中也会再调用一次Ajax请求。

查看Datatable的文档发现,fnClearTable方法实际上有一个布尔值参数来控制是否执行fnDraw方法。因此,只需将该语句修改为

  1. resultDataTable.fnClearTable(false);

即可解决问题。

经过长时间的调查和调试,最终通过阅读源码解决了这个问题。在这个过程中,我们也看到了Datatable作者在编写此插件时采用了许多优秀的编程方法,使得此插件不仅功能强大,而且易于使用和扩展。感谢他们的贡献!


推荐阅读
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 解决JavaScript中法语字符排序问题
    在开发一个使用JavaScript、HTML和CSS的Web应用时,遇到从SQLite数据库中提取的法语词汇排序不正确的问题,特别是带重音符号的字母未按预期排序。 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 在Qt框架中,信号与槽机制是一种独特的组件间通信方式。本文探讨了这一机制相较于传统的C风格回调函数所具有的优势,并分析了其潜在的不足之处。 ... [详细]
  • GLiHT数据介绍
    GLiHT数据介绍 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 题目编号:2049 [SDOI2008]Cave Exploration。题目描述了一种动态图操作场景,涉及三种基本操作:断开两个节点间的连接(destroy(a,b))、建立两个节点间的连接(connect(a,b))以及查询两节点是否连通(query(a,b))。所有操作均确保图中无环存在。 ... [详细]
  • 在现代Web开发中,HTML5 Canvas常用于图像处理和绘图任务。本文将详细介绍如何将Canvas中的图像导出并上传至服务器,适用于拼图、图片编辑等场景。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • 题目描述:计算从起点到终点的最小能量消耗。如果下一个单元格的风向与当前单元格相同,则消耗为0,否则为1。共有8个可能的方向。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • 尽管Medium是一个优秀的发布平台,但在其之外拥有自己的博客仍然非常重要。这不仅提供了另一个与读者互动的渠道,还能确保您的内容安全。本文将介绍如何使用Bash脚本将Medium文章迁移到个人博客。 ... [详细]
  • 本文总结了软件工程课程M1和M2阶段的个人收获,包括项目开发中的技术学习、团队协作及管理经验。同时,对《构建之法》一书中的相关问题进行了理解和分析。 ... [详细]
author-avatar
alilx
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有