2016-10-16 2 views
0

필터가있는 데이터 테이블이 있습니다. 필자는 Ajax를 10 초마다 사용하여 새로운 데이터를 가져오고 테이블에 새 행을 추가합니다. 당신은 내가 업데이트하거나 I 필터링하거나 검색 할 수 있도록 새 데이터로 테이블을 그릴려고시피아약스 호출 후 데이터 테이블을 다시 그려야합니다.

$(function() { 
    setInterval(checkNew,1000*10); 

    $("#orderdate").datepicker({ 
     changeMonth: true, 
     changeYear: true, 
     yearRange: '2013:2050', 
     dateFormat:"dd-mm-yy", 
     showAnim:"fold" 
    }); 

    var table = $('#data').DataTable({ 
     "lengthMenu": [[-1], ["All"]], 
     "bSort": false, 
     "paging": false, 
    }); 

    $("#status").change(function() { table.column(4).search($(this).val()).draw() }); 

}); 

function checkNew(){ 
    $.post('getdata.php',{max: $("#lastid").text().trim() }).done(function (data) { 
     if(data.trim() !== '') { 
      $("table#data").prepend(data.trim()); 
      //need to draw datatable to filter and search new data added to the table 
     } 
    }); 
} 

(테이블 데이터가 없습니다 아약스가 같은 페이지에 동적). 새 데이터를 검색하면 DOM으로로드되지 않았기 때문에 표시되지 않습니다. 하지만 어쨌든 제대로에 내가 어떻게에서 코드를 편집

$("table#data").DataTable().draw(); // new rows are added but can't be searched or filtered 

그리고

$('table#data').dataTable().fnDraw(); //new rows are not added 

을 시도했습니다 테이블을 다시 그리기 필터링하고 새로운 추가 데이터를 검색 할 수있는 테이블을 그릴 수 없습니다?

답변

1

데이터 테이블은 built-in functionality for handling loading data from an ajax request을 테이블에 제공합니다. 또한 reload 메서드를 제공하여 테이블의 데이터를 새로 고칩니다. 다음

var table = $('#data').DataTable({ 
    ajax: "getdata.php" 
}); 

과 :

귀하의 경우

, 당신은 같은 것을 할 수 있어야

setInterval(function() { 
    table.ajax.reload(); 
}, 10000); 

당신이 다시로드 함수에 인수로 전달할 수있는 추가 옵션이 있습니다 유스 케이스에 따라 다르다. 이게 도움이 되길 바란다! getdata.php에

+0

행 $ myrows [] = " ". $ 행 [ 'OrderID를']. " ". $ 행 [얻는 내부 lopp '이름'].' ". $ 행 [ 'LAST_NAME']." ".date ('DM-Y'$ 행 [ 'unix_time'])." ". $ 행 [ 'final_total']." ". $ row [ 'name']." "; } echo json_encode ($ myrows); 색인에 'json 응답이 유효하지 않습니다'오류가 발생했습니다. –

+0

[업데이트] 루프에 있습니다. $ arr [] = $ row; 전체 정보 행을 가져 오지 만 4 개의 필드 만 선택하고 동일한 오류가 발생해야합니다. "ordersid를 orderid, orders.unix_time, orders.final_total, orders.user_id, orders.auto_cancel, users로 선택하십시오. .id는 사용자 ID로, users.first_name, users.last_name, payment_methods_translation.payment_method_id, payment_methods_translation.name은 orders.id = '$ id'및 orders.user_id = users.id 및 orders.payment_method_id = payment_methods_translation.payment_method_id 및 orders.auto_cancel = '1' " –

+0

[업데이트] 코드를 올바르게 변경하고 있지만 콘솔의 네트워크 탭에서이 아약스를 찾을 수 있습니다"mydomain.com//getdata.php?_=1476648685734 "not" mydomain.com//getdata.php?_=1476648685734 "이것은 ajax URL이 정확하지 않다는 것을 의미합니다. 나는 왜 그것이 변경되었는지 알지 못합니다. 그래서 나는 오류가납니다 (도메인은 https입니다) –

관련 문제