我想用成功回调使用DataTables。因为我想给用户一个警告,如果他们输入的创建DataTable的值有错误。DataTables成功回调替代
不幸的是,DataTables需要自己成功回调,因此我不能重载它。
目前的代码是:
configurationBlockChart = $('#blockSearchTable').DataTable(
{
processing: true,
serverSide: true,
stateSave: true,
bDestroy: true,
ajax:
{
type: 'GET',
url:"ajax_retreiveServerSideBlockNames/",
data:
{
'csrfmiddlewaretoken':csrftoken,
'username':username
}
},
rowCallback: function(row, data)
{
if ($.inArray(data.DT_RowId, blockSelected)!== -1)
{
$(row).addClass('selected');
}
},
});
受此阿贾克斯返回获取的数据行的数据。
然而,返回的数据可能已经无效的响应,没有行返回
我试图rowCallBack之前添加成功:
success: function(response)
{
if(response.status == "invalid")
//then inform user
}
还试图用fnDrawCallBack
fnDrawCallback: function(settings, response)
{
console.log("Hello World!");
if(response.status == "invalid")
{
$('#invalid').modal("show");
$('#usernameSearch').modal("show");
}
}
但是,只有在返回行时fnDrawCallBack才会被调用。
问题是,有时候没有行被返回,并且javascript代码给出了一个异常。
但是,我可以做一个尝试,但我仍然想让我的服务器将json状态提供给javascript代码。
编辑:使用xhr,它可以捕获无效响应,同时不会干扰ajax的成功功能。
$('#chartSearchUsername').click(function(event)
{
$('#chartConfigModal').modal("hide");
$('#usernameSearch').modal("show");
configurationUserChart = $('#userSearchTable').DataTable(
{
processing: true,
serverSide: true,
stateSave: true,
bDestroy: true,
ajax:
{
type: 'GET',
url:"ajax_retreiveServerSideUsernames/",
data:
{
'csrfmiddlewaretoken':csrftoken
},
},
rowCallback: function(row, data)
{
if ($.inArray(data.DT_RowId, userSelected)!== -1)
{
$(row).addClass('selected');
}
},
})
.on('xhr.dt', function(e, settings, response)
{
if(response.status == "invalid")
{
$('#invalid').modal("show");
$('#usernameSearch').modal("hide");
}
});
});
您是否尝试过移动的回调函数要对XHR事件执行? [参考这里](http://datatables.net/reference/api/ajax)。那么你可以先检查回来什么 – elzi 2014-11-06 23:38:02
感谢您的回复!不,我没有尝试过,我会尽快查看参考。 – user1157751 2014-11-06 23:39:22
@elzi谢谢! xhr完美无缺! – user1157751 2014-11-07 18:49:01