fnReloadAjax不起作用

时间:2016-05-19 07:02:02

标签: javascript jquery

使用Datatables和fnReloadAjax插件(见下文),我试图使用以下代码从服务器端脚本aftrer提交对话框表重新加载表的数据:

submitHandler: function(form){
  jQueryNew(form).ajaxSubmit({
    type: 'post',
    url: '/sdm/surattugas/addagendanarasumber',
    dataType: 'json',
    beforeSubmit: function(data){
      jQueryNew("#dialog_add_agenda").dialog("close");
    },
    success: function(data){
      jQueryNew(dialog_add_agenda).dialog("close");
      jQueryNew(dialog_daftar_agenda).find('.tabel_agenda_message').removeClass('error').removeClass('success').removeClass('info').removeClass('warning').css("display", 'none').addClass('da-message').addClass(data.typeAlert).text(data.pesan).animate({opacity: 100}, function() {
        jQueryNew(this).slideDown('normal', function() {
          jQueryNew(this).css("display", 'block');
        });
      });

      if (data.typeAlert == 'success'){
        tabel_agenda.fnReloadAjax();                                                             }
    }
  });
  return false;
}

jQueryNew.fn.dataTableExt.oApi.fnReloadAjax = function ( oSettings, sNewSource, fnCallback, bStandingRedraw )
    {
        if ( typeof sNewSource != 'undefined' && sNewSource != null )
        {
            oSettings.sAjaxSource = sNewSource;
        }
        this.oApi._fnProcessingDisplay( oSettings, true );
        var that = this;
        var iStart = oSettings._iDisplayStart;
        var aData = [];
    
        this.oApi._fnServerParams( oSettings, aData );
    
        oSettings.fnServerData( 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 ( typeof bStandingRedraw != 'undefined' && bStandingRedraw === true )
            {
                oSettings._iDisplayStart = iStart;
                that.fnDraw( false );
            }
    
            that.oApi._fnProcessingDisplay( oSettings, false );
    
            /* Callback user function - for event handlers etc */
            if ( typeof fnCallback == 'function' && fnCallback != null )
            {
                fnCallback( oSettings );
            }
        }, oSettings );
    }

但是我仍然得到了这个.oApi._fnServerParams不是一个函数。我做错了什么?

2 个答案:

答案 0 :(得分:0)

只需使用this.oApi.ajax.reload(null,false);

答案 1 :(得分:-1)

Datatables api表示不推荐使用fnReloadAjax https://datatables.net/plug-ins/api/fnReloadAjax

相反,它建议使用这个:
https://datatables.net/reference/api/ajax.reload()