2014-03-07 56 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調用。

這一直是我遇到過的問題,處理消息仍在等待它從未獲得的響應,而不是它與您設置數據表的方式有關的問題。

您必須確保沒有發生意外的ajax錯誤,更多信息here