gpt4 book ai didi

javascript - jQuery 和 DataTables - 是否可以重新调用之前的 AJAX 命令?

转载 作者:行者123 更新时间:2023-12-03 10:39:33 25 4
gpt4 key购买 nike

我使用 jQuery 和 jQuery DataTables。

我遇到的问题是,jQuery Ajax 是否可以调用 DataTable 的 ajax 来再次获取数据?

原因是:

如果一个人打开了同一张 table 的两个网页。

如果在一张表上,他更改了该表的列,则列名称会同步到网页上的数据库。因此,包含相同表的第二个网页将出现不一致(因为列与数据库不匹配)。

当获取请求的列数组与数据库中存储的数组不同时,我试图在服务器端代码上检测到这一点。

例如:

1# 网页有一个获取请求 columns[0] = "column 1", columns[1] = "column 2"

检查数据库,数据库显示有两列,名称为“column 1”和“column 2”。发现列一致,并将数据发送给用户。

在#1 网页上,用户将列更改为 3 列,并且它会自动同步到数据库。

另一方面,#2 网页处于空闲状态,但是当调用 fnDraw 时,它注意到 get 请求列与数据库中的列不同。现在它需要调用 ajax 函数,直到它不返回不需要的响应状态。

目前我有我的代码:

var table = $('#'+String(response.chartID[i])).DataTable({
stateSave: true,
aoColumnDefs: aryJSONColTable,
processing: true,
serverSide: true,
bDestroy: true,
"scrollX": true,
ajax:
{
type: 'POST',
url:"ajax_retrieveMainChartData/",
dataType: 'json',
data:
{
'csrfmiddlewaretoken':csrftoken,
'activeTab':activeTab,
'chartID':response.chartID[i],
},
},
})
.on('xhr.dt', function(e, settings, response)
{
if (response.status == "refresh")
{
location.reload();
}
});

我已经在我的服务器端实现了检查。但对于我的前端,基本上,当服务器和服务器端的列不匹配时,我会执行 location.reload 。

因此,当同一个人在两个地方访问网页并编辑一个表的列时。为了保持一致性,我将使用 location.reload() 在用户网页上进行刷新。

但是,我只想刷新其中一个数据表,而不是整个网页。

出现问题时是否可以调用DataTable的ajax?

我打算在变量表周围放置一个 while 循环,但这可能会弄乱表,因为 Ajax 是异步的。

我正在考虑这样的事情

$(this).DataTable().destroy();
$(this).empty();
$(this).refresh(); <-- This function does not exist

有人能指出我正确的方向吗?

谢谢!

最佳答案

如果我理解正确的话,您在同一页面上有多个数据表。

当用户修改一个列上的列时,您更新另一个列的属性并告诉它重绘怎么样?

var t1 = $('#table1').dataTable();
var t2 = $('#table2').dataTable();

假设您有一个函数可以监视 t1 的更改。要更新t2,请运行t2.fnDraw()

fnDraw() 将使用最新参数重新绘制表格。

关于javascript - jQuery 和 DataTables - 是否可以重新调用之前的 AJAX 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28844101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com