Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 数据表fnDraw';行不通_Jquery_Json_Datatables - Fatal编程技术网

Jquery 数据表fnDraw';行不通

Jquery 数据表fnDraw';行不通,jquery,json,datatables,Jquery,Json,Datatables,我使用的是datatables,它从json文件中获取数据 var date=new Date(); var day=date.getDate(); var dataTable = $('#.main_content table').dataTable({ "bProcessing": true, "bPaginate": false, "bSort": false,

我使用的是datatables,它从json文件中获取数据

var date=new Date();
var day=date.getDate();
var dataTable = $('#.main_content table').dataTable({
                    "bProcessing": true,
                    "bPaginate": false,
                    "bSort": false,
                    "bServerSide": true,
                    "bjQueryUI": true,
                    "sAjaxSource": 'sources/data.json',
                    "fnServerData": fnServerObjectToArray()
                });
fnServerObjectToArray = function () {
            return function (sSource, aoData, fnCallback) {
                $.ajax({
                    "dataType": 'json',
                    "type": "GET",
                    "url": sSource,
                    "data": aoData,
                    "dataType": "json",
                    "success": function (json) {
                        var a = [];
                        var data = json.aoData;
                        for (var i = 0, iLen = data.appointments.length; i < iLen; i++) {
                            var inner = [];
                            inner.push(data.appointments[i].time);
                            if (data.appointments[i].CHT111[day]) {
                                inner.push(data.appointments[i].CHT111[day]);
                                inner.push(data.appointments[i].DOB[day]);
                                inner.push(data.appointments[i].Patient[day]);
                                inner.push(data.appointments[i].Visit_Reason[day]);
                                inner.push(data.appointments[i].Room[day]);
                                inner.push(data.appointments[i].Scheduled[day]);
                            }
                            else {
                                inner.push(data.appointments[i].CHT111.default);
                                inner.push(data.appointments[i].DOB.default);
                                inner.push(data.appointments[i].Patient.default);
                                inner.push(data.appointments[i].Visit_Reason.default);
                                inner.push(data.appointments[i].Room.default);
                                inner.push(data.appointments[i].Scheduled.default);
                            }
                            a.push(inner);
                        }
                        json.aaData = a;
                        fnCallback(json);
                    }
                });
            }
        }
如您所见,我正在使用一个函数从json文件中提取数据

var date=new Date();
var day=date.getDate();
var dataTable = $('#.main_content table').dataTable({
                    "bProcessing": true,
                    "bPaginate": false,
                    "bSort": false,
                    "bServerSide": true,
                    "bjQueryUI": true,
                    "sAjaxSource": 'sources/data.json',
                    "fnServerData": fnServerObjectToArray()
                });
fnServerObjectToArray = function () {
            return function (sSource, aoData, fnCallback) {
                $.ajax({
                    "dataType": 'json',
                    "type": "GET",
                    "url": sSource,
                    "data": aoData,
                    "dataType": "json",
                    "success": function (json) {
                        var a = [];
                        var data = json.aoData;
                        for (var i = 0, iLen = data.appointments.length; i < iLen; i++) {
                            var inner = [];
                            inner.push(data.appointments[i].time);
                            if (data.appointments[i].CHT111[day]) {
                                inner.push(data.appointments[i].CHT111[day]);
                                inner.push(data.appointments[i].DOB[day]);
                                inner.push(data.appointments[i].Patient[day]);
                                inner.push(data.appointments[i].Visit_Reason[day]);
                                inner.push(data.appointments[i].Room[day]);
                                inner.push(data.appointments[i].Scheduled[day]);
                            }
                            else {
                                inner.push(data.appointments[i].CHT111.default);
                                inner.push(data.appointments[i].DOB.default);
                                inner.push(data.appointments[i].Patient.default);
                                inner.push(data.appointments[i].Visit_Reason.default);
                                inner.push(data.appointments[i].Room.default);
                                inner.push(data.appointments[i].Scheduled.default);
                            }
                            a.push(inner);
                        }
                        json.aaData = a;
                        fnCallback(json);
                    }
                });
            }
        }
fnServerObjectToArray=函数(){
返回函数(sSource、aoData、fnCallback){
$.ajax({
“数据类型”:“json”,
“类型”:“获取”,
“url”:sSource,
“数据”:aoData,
“数据类型”:“json”,
“成功”:函数(json){
var a=[];
var data=json.aoData;
对于(var i=0,iLen=data.appoinces.length;i

问题是,我有一个按钮,可以更改day变量,然后调用fnDraw()方法,但该方法不起作用。

根据datatables文档,fnDraw不会重新加载Ajax数据。然而,有一个名为fnReloadAjax的插件,它将完全满足您的需求。以下代码是插件代码,只需将其另存为js文件,并在加载datatables js之后、初始化表之前加载:

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

你怎么称呼fnDraw?有代码段吗?$(“按钮”)。单击(function(){dataTable.fnDraw();})它仍然不起作用。数据表没有被重绘,而且此函数还请求文件twiceOk!我发现了什么不起作用。ReloadAjax()函数不适用于上的服务器端处理。