Ajax DataTables.js-缓存请求的页面/行的分页插件

Ajax DataTables.js-缓存请求的页面/行的分页插件,ajax,caching,jquery-datatables,jquery-pagination,Ajax,Caching,Jquery Datatables,Jquery Pagination,有人知道是否有一个可用的插件允许表缓存ajax请求的行吗 目前,datatables能够通过ajax源代码实现分页。我需要缓存已请求的行。 1.演出 2.我需要从请求的行访问输入字段 有人知道怎么做吗 谢谢。只为需要这个的人准备。我创建了一个缓存所有渲染行的 适用于jquery 1.10.2和dataTables 1.10.0 $.fn.dataTable.ajaxCaching = function () { var jsonData = null; var reqStart = null;

有人知道是否有一个可用的插件允许表缓存ajax请求的行吗

目前,datatables能够通过ajax源代码实现分页。我需要缓存已请求的行。 1.演出 2.我需要从请求的行访问输入字段

有人知道怎么做吗


谢谢。

只为需要这个的人准备。我创建了一个缓存所有渲染行的

适用于jquery 1.10.2和dataTables 1.10.0

$.fn.dataTable.ajaxCaching = function () {
var jsonData = null;

var reqStart = null;
var reqEnd = null;

var displayStart = null;
var displayLength = null;

var req = {};

function _assembleRequest(request) {
    $(request).each(function () {
        req[this.name] = this;
    });
}

function _checkRows() {
    var ret = false;

    if (jsonData == null) return true;

    // check for cached rows; update req start at the start of unrequested row
    for (var i = reqStart; i < (reqStart + reqLength); i++) {
        if (jsonData.aaData[i] == undefined) {
            reqStart = i;
            ret = true;
            break;
        };
    }

    // if not all rows are requested, find last row for the range to be requested
    if (ret) {
        for (var i = (reqStart + reqLength) - 1; i > reqStart; i--) {
            if (jsonData.aaData[i] == undefined) {
                reqEnd = i;
                break;
            }
        }
    }

    return ret;
}

return function (sSource, aoData, fnCallback, oSettings) {
    _assembleRequest(aoData);

    reqStart = displayStart = req.iDisplayStart.value;
    reqLength = displayLength = req.iDisplayLength.value;

    oSettings._iDisplayStart = displayStart;
    oSettings._iDisplayLength = displayLength;

    // Request Rows
    if (_checkRows()) {
        req.iDisplayStart.value = reqStart;
        req.iDisplayLength.value = reqLength;

        $.ajax({
            'dataType': 'json',
            'type': 'POST',
            'url': sSource,
            'data': aoData,
            'success': function (json) {
                // update cached data
                if (jsonData == null) {
                    jsonData = json;
                } else {
                    for (var i = 0; i < json.aaData.length; i++) {
                        jsonData.aaData[i + reqStart] = json.aaData[i];
                    }
                    json.aaData = jsonData.aaData.slice(displayStart, (displayStart + displayLength));
                }
                oSettings.cachedData = jsonData.aaData;
                fnCallback(json);
            }
        });

    } else {
        jsonData.sEcho = req.sEcho.value;
        // render cached data
        var json = $.extend(true, {}, jsonData);
        json.iDisplayStart = displayStart;
        json.iDisplayLength = displayLength;
        json.aaData = jsonData.aaData.slice(displayStart, (displayStart + displayLength));
        oSettings.cachedData = jsonData.aaData;
        fnCallback(json);
    }
};
};

我需要访问输入字段,您的意思是…?对于基于ajax的分页,每个页面请求都会重新呈现表。如果我在第一页中有一些更改,然后转到其他页面,我希望在提交时获得这些值。
$('#Table').dataTable({
            'bServerSide': true,
            'sAjaxSource': 'url/to/web/api',
            'fnServerData': $.fn.dataTable.ajaxCaching(),
             ....
});