Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
Javascript 您的更改是否不能立即生效?JS序列错误?_Javascript_Jquery_Datatables_Sequence_Jquery Datatables - Fatal编程技术网

Javascript 您的更改是否不能立即生效?JS序列错误?

Javascript 您的更改是否不能立即生效?JS序列错误?,javascript,jquery,datatables,sequence,jquery-datatables,Javascript,Jquery,Datatables,Sequence,Jquery Datatables,我遇到了一个奇怪的问题,它发生在我维护的几个使用数据表的站点上 每当我使用fnPageChange时,它都不会工作,除非它周围有一个像这样的设置超时 setTimeout(function() { oTable.fnPageChange(whatPage); }, 100); 或者在它之前发出警报 alert('starting'); oTable.fnPageChange('last'); 我理解这可能是某种顺序错误,但我不确定为什么在多个项目中会出现相同的问题 下面是我正在使用的删除函数

我遇到了一个奇怪的问题,它发生在我维护的几个使用数据表的站点上

每当我使用fnPageChange时,它都不会工作,除非它周围有一个像这样的设置超时

setTimeout(function() { oTable.fnPageChange(whatPage); }, 100);
或者在它之前发出警报

alert('starting'); oTable.fnPageChange('last');
我理解这可能是某种顺序错误,但我不确定为什么在多个项目中会出现相同的问题

下面是我正在使用的删除函数:

function fnDelete(elem){
    if (selected.length>0) {
        var c;
        c = confirm('Are you sure you want to delete the selected ${displayTableName}?');
        if (c) {
            // Create delete url from editor url...
            var deleteURL = (urlstr.substring(0, urlstr.lastIndexOf('/') + 1)) + "delete.do";
            deleteRecord(deleteURL,selected[0]);

            if ( $('tableViewer tr').length === 0) {
                // Reload the Table
                oTable.fnPageChange('last');
                //Send them back to the last page
            }
        }
    }

}
有人知道这可能是什么问题吗

以下是您的记录:

function deleteRecord(deleteURL, iid){
    var didDelete = false;
    jQuery.ajax({
            type: "POST",
            url: deleteURL,
            dataType:"html",
            data:"recordID="+iid,
            success:function(response){
                didDelete = true;
                oTable.fnDraw(true);
                selected = [];
                selectedRecord = [];
                enableButtons(selected);
            },
            error:function (xhr, ajaxOptions, thrownError){
                if ((xhr.status >=400) && (xhr.status < 500))
                    alert(xhr.responseText);
                else
                    alert('error');
            }    
        });

    return didDelete;
}
函数deleteRecord(deleteURL,iid){
var didDelete=false;
jQuery.ajax({
类型:“POST”,
url:deleteURL,
数据类型:“html”,
数据:“记录ID=”+iid,
成功:功能(响应){
didDelete=true;
可旋转。fnDraw(真);
选定=[];
selectedRecord=[];
启用按钮(选中);
},
错误:函数(xhr、ajaxOptions、thrownError){
如果((xhr.status>=400)和&(xhr.status<500))
警报(xhr.responseText);
其他的
警报(“错误”);
}    
});
返回并删除;
}

您可以按以下方式尝试

oTable.page(CurrentPageNo).draw(false);

这里,oTable是Datatable的对象。

不知何故,我认为
deleteRecord
是异步的,对吗?)我认为是这样?我已经在问题中添加了函数——这就是问题所在吗?我仍在处理我的ajax lolYa,在ajax配置请求中设置“async:false”,是的,这就是问题所在。如果($('tableViewer tr').length==0)行不会等待ajax调用完成,除非您也将其置于公共序列之外(使用setTimeout或alert)。哦,好的。我在ajax类型下添加了'async:false',但它仍然不起作用?ajax调用中是否还有其他区域我应该放置它,或者这里是否有其他事情发生(可能是第二个同步的ajax调用或其他事情)?问题不是关于如何更改页面。OP已经使用了数据表1.9中的
fnPageChange
方法,该方法与数据表1.10中的
page
方法相同。