3

我正在使用DataTables(jQuery 插件)来显示我的表格数据。如果使用 AJAX 从 JSON Web 服务获取数据。

如何使用 JavaScript/jQuery 强制刷新?我正在查看 API,但找不到正确的功能。

4

3 回答 3

5

在等待答案的过程中,我终于找到了:fnDraw功能正是我所需要的。

在 API 部分的开头进行了描述,但我只是懒得通读:

您必须对服务器进行必要的调用以根据需要处理您的数据,然后只需重新绘制表格 ( fnDraw)即可查看新数据。

于 2012-10-11T21:36:56.253 回答
1

尝试调用:

$("#Table1").fnDestroy().dataTable();

那应该重建它...

于 2012-10-11T21:24:50.617 回答
1

在某处添加:

$.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 );
}

然后像这样调用它:

oTable = $(".dt").dataTable();
oTable.fnReloadAjax();

信用:http ://datatables.net/plug-ins/api

于 2012-10-11T21:29:09.863 回答