How to get data retrieved by the previous draw in drawCallback
How to get data retrieved by the previous draw in drawCallback
Currently I am working on the server-side processing stuff.
Looking at the doc for the drawCallback, one thing I notice is that: unlink the initComplete or ajax.reload, the drawCallback doesn't provide a parameter json, which is the data just received for the previous draw.
What I intend to do is: every time when dataTable sends a ajax draw request to the server, my server will reply back the data as well as a timestamp that records the time that this request is received by the server. After each draw, I want to access this timestamp which is contained in the json variable sent from the server. However, since drawCallback does not have a parameter for it, I am not sure how to do that
What I want is something like
drawCallback : function(setting, json) {
// used the timestamp sent in the json, I am able to update the information shown on the page for every draw event
$('#time').text(json.timestamp);
}
Right now, the way I manage to get the same goal is via ajax.dataSrc, in which I do
dataStrc: function (json) {
$('#time').text(json.timestamp);
return json.tableData; // array of data used to draw the table
}
However, I am not sure whether using dataSrc as a callback for the draw event will always be equivalent to use the drawCallback which is designed to serve as the callback for the draw
I need a function to be fired after each draw has been completed, preferably as a callback, and I can also access the data obtained by the previous draw request in this function.
Thanks
Answers
My first thought was to use
ajax.dataSrcand store the timestamp in a global variable. But Allan says that it doesn't always work reliable with server side processing. However if it works then use it.Another option will allow you to use
drawCallback. You can get an API instance in drawCallback then use theajax.json()API to get the JSON returned.I tried it here and it works:
http://live.datatables.net/bodisuzu/1/edit
Either approach should work despite what Allan says
Kevin
If all you are interested in is the time stamp then I would do this