ajax成功后重新加载数据表

时间:2016-08-10 15:33:49

标签: javascript jquery ajax datatable datatables

我使用JQuery DataTable。我在ajax成功的json文件中将数据发送到datatable onclick。第一次单击一切都很好,但是下一次单击我得到的数据是正确的,而dataTables_info的错误值总是显示dataTables_info的第一个值和paginatio AND行也是第一个结果。 这是数据表中第一个数据显示:

The first Click

所有下一次点击我只得到正确的数据: 对于这个例子,他们是一个结果显示在下面的图片,但其他一切(信息,显示,分页)属于在第一张图片中显示的第一个搜索: enter image description here

在第二个例子当我点击分页的任何页面时,我得到第一页结果的内容!! 这是我的功能ONclick:

    $ ( '#ButtonPostJson' ).on('click',function() {

             $("tbody").empty();
             var forsearch = $("#searchItem").val();

    $.ajax({
        processing: true,
        serverSide: true,
        type: 'post',
        url: 'searchData.json',
        dataType: "json",
        data: mysearch,
       /* bRetrieve : true,*/

        success: function(data) {
            $.each(data, function(i, data) {
                var body = "<tr>";
                body    += "<td>" + data.name + "</td>";
               ..........................
               ..........................
                body    += "</tr>";
                $('.datatable-ajax-source table').append(body);

            })
        ;
            /*DataTables instantiation.*/
     $('.datatable-ajax-source table').dataTable();
    },

        error: function() {
            alert('Processus Echoué!');
        },
        afterSend: function(){
    $('.datatable-ajax-source table').dataTable().reload();
 /* $('.datatable-ajax-source table').dataTable({bRetrieve : true}).fnDestroy();    
    $(this).parents().remove(); 
$('.datatable-ajax-source table').dataTable().clear();*/
    }
    });
    });

我尝试了一切,我不知道我想念的是什么。 我将这个jquery用于数据表:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>

感谢。

11 个答案:

答案 0 :(得分:2)

在按钮clik上你不需要清空你的表体并使用ajax再次启动数据表。

你必须再次调用你的ajax,因为你已经启动了文档就绪功能

只需使用

$("#Table_id").ajax.reload();

查看以下链接,您将有更好的想法。

https://datatables.net/reference/api/ajax.reload()

如果这对您没有帮助,请告诉我

答案 1 :(得分:1)

此链接Refreshing data in jQuery DataTables

是非常好的帮助,我鼓励它来解决我的问题。

答案 2 :(得分:1)

我创建了这个简单的函数:

function refreshTable() {
  $('.dataTable').each(function() {
      dt = $(this).dataTable();
      dt.fnDraw();
  })
}

答案 3 :(得分:0)

$("#Table_id").ajax.reload();无效。

我实施了 -

var mytbl = $("#Table_id").datatable();
mytbl.ajax.reload;

答案 4 :(得分:0)

使用下面的代码..完美的工作,它保持你的分页而不会丢失当前页面

$(&#34;#table-example&#34;)。DataTable()。ajax.reload(null,false);

答案 5 :(得分:0)

我有同样的问题。我在一个处理这个问题的项目中找到了一个函数。这是我制作的一个简单的2列表。

<table id="memberships" class="table table-striped table-bordered table-hover"  width="100%">
        <thead>
            <tr>
                <th>Member Name</th>
                <th>Location</th>
            </tr>
        </thead>
        <tfoot>
          <tr>
            <th>Member Name</th>
            <th>Location</th>
          </tr>
        </tfoot>
      </table>

这是我填充它的脚本:

function drawTable(){
var table = $('#memberships').DataTable();

table.destroy();

value = $("#memberName").val();
console.log("member name-->>" + value);
$('#memberships').DataTable({
responsive:true,
pageLength: 50,
ajax:{
    "url": `//BACKEND API CALL`,
    "type":"get",
    "dataSrc": 'members'//my data is in an array called members
},
columns: [
  {"data": "name_display" },
  {"targets": 0,
    "data": "membershipID",
    "render": function ( data, type, full, meta ) {
      return '<button type="button" class="btn btn-info btn-block" 
      onclick="editMember(' + data + ')">Edit Member</button><button 
      type="button" class="btn btn-danger btn-block" 
      onclick="deleteMember(' + data + ')">Delete</button>';
    }
  }
 ]
});
$.fn.dataTable.ext.errMode = 'none';
}

您可以忽略我的列渲染功能。我根据返回的数据需要2个按钮。关键是函数中的table.destroy。我在一个名为table的变量中创建了表。我在这个初始化中将其销毁,因为它允许我一遍又一遍地使用同样的功能。它第一次破坏一张空桌子。之后的每次调用都会破坏数据并从ajax调用中重新填充数据。

希望这有帮助。

答案 6 :(得分:0)

.reload()在我们传递一些参数之前无法正常工作

var  = $("#example").DataTable() ;
datatbale_name.ajax.reload(null, false );

答案 7 :(得分:0)

像这样使用

$('#product_table').DataTable().ajax.reload();

答案 8 :(得分:0)

尝试一下,我希望它能起作用

$(“#datatable_id”)。DataTable()。ajax.reload();

答案 9 :(得分:0)

首先获取表ID,例如:

var table=('#tableid').Datatable();
table.draw();

只需将这些行放在 ajax success 函数之后即可重新加载数据表

答案 10 :(得分:-1)

$('.table').DataTable().ajax.reload(); 这对我有用..