2015-02-04 1 views
5

I가 DT v1.10에 아래에 다음 코드 : 의 DataTable() ajax.reload()

var oTable = $('#items') 
    .dataTable({ 
     sDom: "<'row'<'col-md-4'l><'col-md-6'f>r>t<'row'<'col-md-4'i><'col-md-7'p>>", 
     oLanguage: { 
      sLengthMenu: "_MENU_ per page" 
     }, 
     ajax: "/items", 
     bProcessing: true, 
     bServerSide: true, 
     aoColumnDefs: [ 
      { 
       aTargets: [-1], 
       bSearchable: false, 
       bSortable: false 
      } 
     ] 
    }) 
    .on('click', '.btn-danger', function (e) { 
     if (confirm('Are you sure you want to delete SKU "' + $(this).data('sku') + '"?')) { 
      $.getJSON($(this).attr('href'), function (data) { 
       if ('success' in data) { 
        oTable.ajax.reload(null, false); 
       } 
      }); 
     } 
     event.stopPropagation(); 
     return false; 
    }); 

서버가 성공적으로 응답

, 그것은 라인 oTable.ajax.reload(null, false);을 호출하려고하지만 난 항상 얻을 오류 Uncaught TypeError: Cannot read property 'reload' of undefined

여기서 내가 뭘 잘못하고 있니?

답변

18

DataTables v1.10에서 계속 사용할 수있는 이전 API : $().dataTable() (v1.9 및 이전 버전)을 사용 중입니다. 새로운 API를 통해 반환

oTable.api().ajax.reload(); 

: 당신이 DataTable의 API 메소드를 사용하기 위해 .api()를 사용해야하므로 기존 API는의 jQuery 객체를 반환 $().DataTable()

Datatables FAQ

Q를 : API 메소드를 사용할 수 없다는 오류 메시지가 표시됩니다.
.: e DataTables API 인스턴스 대신 jQuery 객체를 사용합니다. $().dataTable() 양식은 jQuery 오브젝트를 리턴하고 $().DataTable()은 DataTables API 인스턴스를 리턴합니다. 자세한 내용은 API 설명서를 참조하십시오.

API documentation

$(selector).DataTable()$(selector).dataTable()의 차이를 주목하는 것이 중요하다

. 전자는 DataTables API 인스턴스를 반환하고 후자는 jQueryJS 객체를 반환합니다. api() 메소드가 jQuery 객체에 추가되어 API에 쉽게 액세스 할 수 있지만 다른 jQuery 인스턴스 (예 : addClass() 등)와 마찬가지로 jQuery 객체는 테이블 노드를 조작하는 데 유용 할 수 있습니다.

7

phillip100의 답변에 따라 이전 코드를 모두 변경하거나 초기화 메소드를 변경하여 새로운 API를 사용하지 않아도됩니다. 언제든지 dataTables 1.10.x API를 즉시 얻을 수 있습니다.

... 
if ('success' in data) { 
    //oTable.ajax.reload(null, false); 
    $('#items').DataTable().ajax.reload(null, false); 
} 
... 

역시 완벽 할 것입니다. jQuery dataTables는 이미 $("#items")의 dataTables 인스턴스가 있는지 확인하므로 중복성이 없습니다.

+0

후속 조치에 많은 감사를드립니다. 매우 도움이된다! :) – eComEvo