【问题标题】:datatable is displaying old value when i click next or previous button.当我单击下一个或上一个按钮时,数据表显示旧值。
【发布时间】:2016-05-09 11:28:45
【问题描述】:

我使用 jquery 数据表来显示基于使用 ajax 的用户搜索的数据。数据表不刷新。当我单击下一个或上一个按钮时,它会显示第一次加载的值。

function searchCustomer() {

 var frm = $("#customerDetailSearchForm").serializeObject();
 $("#tbl_contact_search_result").hide();

 $.ajax({ 
 type: 'POST', 
 url: restContextPath + '/IONSWeb/rest/order/searchContact', 
 data: JSON.stringify(frm),
 dataType: 'json',
 contentType: "application/json; charset=utf-8",
 success: function(data, status, xhr) {             
         $("#tbl_contact_search_result tbody").empty();
     $.each(data.body, function(i, item) {                 
         var checkBox = item.actionString;
         var dataTableBodyHTML = '<tr><td>'+ checkBox + '</td><td>'+ item.name + '</td><td>'+ item.street +'</td><td>' + item.city + '</td><td>'+ item.state + '</td><td>' + item.phone +'</td></tr>';

         $("#tbl_contact_search_result tbody").append(dataTableBodyHTML);            
         $("#tbl_contact_search_result").show();
     });        
         var dataTable = $('#tbl_contact_search_result').DataTable();

        },
        error: function(jqXhr, textStatus, errorMessage) {               
              $('.ErrorMsg').html('<h5>An error has occurred</h5>');
           }
        });
  }

【问题讨论】:

  • 后返回是否为您提供正确的数据?也许它被缓存了?或者数据是否正确并且表格只是没有更新?
  • @Shilly,是的,我得到了正确的数据作为响应,并且数据表正在前 10 条记录中显示该数据。如果我使用下一个按钮或单击分页导航到第二页,则显示旧数据。如果我点击排序也显示旧数据。新数据立即消失。
  • 听起来有点像这个函数和另一个设置数据表内容的函数冲突。这是将数据附加到表体的唯一函数吗?
  • 是的,这是唯一将数据附加到表体的函数。
  • 嗯,请看一下数据表库的手册,如果您自己没有编写这些代码,您可能需要使用其他代码或其他东西才能使导航/排序工作正常工作。不知道,对不起。

标签: javascript jquery datatables


【解决方案1】:

只需禁用 ajax 缓存功能。 The default value is true。因此,您必须将其设置为 false。 (缓存:假)

function searchCustomer() {

 var frm = $("#customerDetailSearchForm").serializeObject();
 $("#tbl_contact_search_result").hide();

 $.ajax({ 
 type: 'POST', 
 url: restContextPath + '/IONSWeb/rest/order/searchContact', 
 data: JSON.stringify(frm),
 dataType: 'json',
 cache: false,
 contentType: "application/json; charset=utf-8",
 success: function(data, status, xhr) {             
         $("#tbl_contact_search_result tbody").empty();
     $.each(data.body, function(i, item) {                 
         var checkBox = item.actionString;
         var dataTableBodyHTML = '<tr><td>'+ checkBox + '</td><td>'+ item.name + '</td><td>'+ item.street +'</td><td>' + item.city + '</td><td>'+ item.state + '</td><td>' + item.phone +'</td></tr>';

         $("#tbl_contact_search_result tbody").append(dataTableBodyHTML);            
         $("#tbl_contact_search_result").show();
     });        
         var dataTable = $('#tbl_contact_search_result').DataTable();

        },
        error: function(jqXhr, textStatus, errorMessage) {               
              $('.ErrorMsg').html('<h5>An error has occurred</h5>');
           }
        });
  }

【讨论】:

  • 我添加了缓存:false,即使当我点击分页按钮时它显示的是旧数据。当我单击分页按钮时,数据表中的第一页显示新值,只有它显示旧值。所以,问题出在 ajax 中,我认为问题仅出在数据表中
  • 也许您在系统中使用了一些缓存功能
猜你喜欢
  • 2020-11-29
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多