2014-03-07 3 views
0

reloadajax 함수를 사용하려고하는데 테이블을 처리 할 때 아무 것도 실행되지 않습니다. 버튼과 모든 것이 테이블 안에서 작동하지만 테이블을 다시로드하지 않고 붙어 있습니다. 어떤 아이디어가 필요한가?Jquery Datatables ReloadAjax

<script type="text/javascript"> 
$.fn.dataTableExt.oApi.fnReloadAjax = function (oSettings, sNewSource, fnCallback, bStandingRedraw) 
{ 
    // DataTables 1.10 compatibility - if 1.10 then versionCheck exists. 
    // 1.10s API has ajax reloading built in, so we use those abilities 
    // directly. 
    if ($.fn.dataTable.versionCheck) { 
     var api = new $.fn.dataTable.Api(oSettings); 

     if (sNewSource) { 
      api.ajax.url(sNewSource).load(fnCallback, !bStandingRedraw); 
     } 
     else { 
      api.ajax.reload(fnCallback, !bStandingRedraw); 
     } 
     return; 
    } 

    if (sNewSource !== undefined && sNewSource !== null) { 
     oSettings.sAjaxSource = sNewSource; 
    } 

    // Server-side processing should just call fnDraw 
    if (oSettings.oFeatures.bServerSide) { 
     this.fnDraw(); 
     return; 
    } 

    this.oApi._fnProcessingDisplay(oSettings, true); 
    var that = this; 
    var iStart = oSettings._iDisplayStart; 
    var aData = []; 

    this.oApi._fnServerParams(oSettings, aData); 

    oSettings.fnServerData.call(oSettings.oInstance, oSettings.sAjaxSource, aData, function(json) { 
     /* Clear the old information from the table */ 
     that.oApi._fnClearTable(oSettings); 

     /* Got the data - add it to the table */ 
     var aData = (oSettings.sAjaxDataProp !== "") ? 
      that.oApi._fnGetObjectDataFn(oSettings.sAjaxDataProp)(json) : json; 

     for (var i=0 ; i<aData.length ; i++) 
     { 
      that.oApi._fnAddData(oSettings, aData[i]); 
     } 

     oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); 

     that.fnDraw(); 

     if (bStandingRedraw === true) 
     { 
      oSettings._iDisplayStart = iStart; 
      that.oApi._fnCalculateEnd(oSettings); 
      that.fnDraw(false); 
     } 

     that.oApi._fnProcessingDisplay(oSettings, false); 

     /* Callback user function - for event handlers etc */ 
     if (typeof fnCallback == 'function' && fnCallback !== null) 
     { 
      fnCallback(oSettings); 
     } 
    }, oSettings); 
}; 



$(document).ready(function() { 




    $('#example').dataTable({ 
       "bProcessing": true, 
       "sAjaxSource": 'test2.php', 
       "bJQueryUI": true, 
       "bPaginate": true, 
       "sScrollX": "", 
       "bSortClasses": false, 
       "aaSorting": [[0,'asc']], 
       "bAutoWidth": true, 
       "bInfo": true, 
       "sScrollY": "100%", 
       "sScrollX": "100%", 
       "bScrollCollapse": true, 
       "sPaginationType": "full_numbers" 

    }); 

    //Non registered checkouts 
$(document).on('click', '.checkinNoReg', function() { 

    var id_of_item_to_approve = $(this).attr("id"); 

    $.ajax({ 
     url: "test3.php", 
     type: "POST", 
     data: "eventid=<?PHP echo $eventId;?>" + "&id=" + id_of_item_to_approve, 
     success: function(){ 
      $('#example').dataTable().fnReloadAjax(); 

     }, 
     error:function(){ 
      alert("Fail"); 
     } 
    }); 

}); 


}); 

</script> 

답변

0

ajax 호출이 요청을 보내고 응답을 올바르게 수신합니까?

콘솔을 확인하여 응답을 받고 프로세스 중에 오류가 발생하지 않았는지 또는 ajax 호출을 별도로 실행 해보십시오.

이 문제가 발생했을 때 항상이 문제가 발생했습니다. 처리 메시지는 데이터 테이블을 설정하는 방식에 문제가있는 것이 아니라 응답을 기다리고 있기 때문에 계속 남아 있습니다.

예상치 못한 아약스 오류가 발생하지 않았는지 확인해야합니다 (추가 정보 here).