jQuery 和 DataTables - 是否可以重新调用之前的 AJAX 命令?
jQuery and DataTables - Is it possible to re-call the previous AJAX command?
我正在使用 jQuery 和 jQuery 数据表。
我遇到的问题是,是否可以在 jQuery Ajax 中调用 DataTable 的 ajax 再次获取数据?
原因是:
如果一个人打开了两个相同 table 的网页。
如果在一个 table 上,他更改了 table 的列,列名将同步到网页上的数据库。因此,包含相同 table 的第二个网页将不一致(因为列与数据库不匹配)。
当获取请求的列数组与数据库中存储的不同时,我试图在服务器端代码中检测到这一点。
例如:
1#网页有get请求columns[0] = "column 1", columns[1] = "column 2"
查询数据库,数据库说有两列,名称为"column 1"和"column 2"。发现列一致,发送数据给用户
在#1 网页,用户将列更改为 3 列,并自动同步到数据库。
另一方面,#2 网页是空闲的,但是当调用 fnDraw 时,它注意到 get 请求的列与数据库中的不同。现在它需要调用 ajax 函数,直到它没有 return 不需要的响应状态。
目前我有我的代码:
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。
因此当同一个人在两个地方访问网页,并编辑一个table的专栏时。为了保持一致性,我将使用 location.reload() 来刷新用户的网页。
但是,我只想刷新其中一个数据表,而不是整个网页。
DataTable出现问题时是否可以召回ajax?
我打算围绕变量 table 放置一个 while 循环,但这可能会弄乱 table,因为 Ajax 是异步的。
我在想这样的事情
$(this).DataTable().destroy();
$(this).empty();
$(this).refresh(); <-- This function does not exist
有人能给我指出正确的方向吗?
谢谢!
如果我理解正确的话,您在同一页上有多个数据table。
当用户修改其中一个的列时,您更新另一个的属性并告诉它重绘怎么样?
var t1 = $('#table1').dataTable();
var t2 = $('#table2').dataTable();
假设您有一个监视 t1
变化的函数。更新 t2
运行 t2.fnDraw()
fnDraw()
将使用最新的参数重新绘制 table。
我正在使用 jQuery 和 jQuery 数据表。
我遇到的问题是,是否可以在 jQuery Ajax 中调用 DataTable 的 ajax 再次获取数据?
原因是:
如果一个人打开了两个相同 table 的网页。
如果在一个 table 上,他更改了 table 的列,列名将同步到网页上的数据库。因此,包含相同 table 的第二个网页将不一致(因为列与数据库不匹配)。
当获取请求的列数组与数据库中存储的不同时,我试图在服务器端代码中检测到这一点。
例如:
1#网页有get请求columns[0] = "column 1", columns[1] = "column 2"
查询数据库,数据库说有两列,名称为"column 1"和"column 2"。发现列一致,发送数据给用户
在#1 网页,用户将列更改为 3 列,并自动同步到数据库。
另一方面,#2 网页是空闲的,但是当调用 fnDraw 时,它注意到 get 请求的列与数据库中的不同。现在它需要调用 ajax 函数,直到它没有 return 不需要的响应状态。
目前我有我的代码:
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。
因此当同一个人在两个地方访问网页,并编辑一个table的专栏时。为了保持一致性,我将使用 location.reload() 来刷新用户的网页。
但是,我只想刷新其中一个数据表,而不是整个网页。
DataTable出现问题时是否可以召回ajax?
我打算围绕变量 table 放置一个 while 循环,但这可能会弄乱 table,因为 Ajax 是异步的。
我在想这样的事情
$(this).DataTable().destroy();
$(this).empty();
$(this).refresh(); <-- This function does not exist
有人能给我指出正确的方向吗?
谢谢!
如果我理解正确的话,您在同一页上有多个数据table。
当用户修改其中一个的列时,您更新另一个的属性并告诉它重绘怎么样?
var t1 = $('#table1').dataTable();
var t2 = $('#table2').dataTable();
假设您有一个监视 t1
变化的函数。更新 t2
运行 t2.fnDraw()
fnDraw()
将使用最新的参数重新绘制 table。