【发布时间】:2016-02-03 21:04:04
【问题描述】:
在使用 window.onload 函数加载页面时,我正在使用 jQuery.ajax 向端点发送 AJAX 查询
如果此 AJAX 查询成功,我将初始化一个 Datatable 并使用从查询接收到的数据呈现它。像这样的:
//Global variables
var jrow=0;
var rdata = new Array();
var table2;
var rinfo={};
var prow=0;
//AJAX success function
success: function (data, status, jqXHR) {
for (var key in data) {
if (data.hasOwnProperty(key)) {
//Copying the data received array into rdata array
rdata[key] = data[key];
}
}
// Initializing the Datatable
table2 =
$('#dataTables-example').DataTable( {
"bProcessing": false,
"destroy": true,
"aaData": data,// <-- your array of objects
"sDefaultContent": "",
"aoColumns": [
{"mData": "text"},
{
"mRender": function (data, type, full)
{
//Rendering unique div IDs for each row
btn2 = '<div id="jiralink' + jrow + '"></div>'
jrow++;
return btn2;
}
}
]
} );
},
现在,一旦在 AJAX 查询成功完成后绘制了这个 Datatable,我想运行另一个后台 AJAX 查询,通过将行数据对象和行索引传递给函数来检索每一行的 JIRA 链接。
我想到实现这一点的方法是为 AJAX 查询的complete 事件定义这个函数。所以,是这样的:
//AJAX Complete function
complete: function(){
//Since rdata is the array object of the entire datatable
for (k in rdata) {
//row data object
rinfo = rdata[k];
//So, for each row data, calling my function to retrieve JIRA Link
start_long_task(rinfo, prow)
prow = prow+1;
}
}
最后,我的start_long_task 函数看起来像这样:
function start_long_task(rinfo, prow) {
div = $('<div class="jiralink' + prow+ '"><div></div><div>0%</div><div> </div></div><hr>');
$('#jiralink' + prow).append(div);
//Using nanobar to show the progress bar
var nanobar = new Nanobar({
bg: '#44f',
target: document.getElementById('jiralink'+prow)
});
$.ajax({
type: 'POST',
url: '/retrieveticket',
contentType: 'application/json',
data: JSON.stringify(rinfo),
processData: false,
dataType: 'json',
success: function (data, status, request) {
status_url = request.getResponseHeader('Location');
update_progress(status_url, nanobar, div[0]);
},
error: function () {
alert('Unexpected error');
}
});
}
问题是这似乎不起作用。我认为将行索引值初始化为 0 然后递增它是问题所在。我还有其他方法可以解决这个问题吗?
有没有其他方法可以在绘制数据表一次后,在后台逐行遍历每一行,将行数据和索引传递给我的start_long_task 函数,以便与该行对应的正确 JIRA 链接是否显示在该行单元格中?
【问题讨论】:
-
查看数据表回调事件,rowCallback 和 drawCalback
标签: jquery ajax flask datatable