xhr
Ajax event - fired when an Ajax request is completed.
Description
When working with Ajax data, it is often useful to know when DataTables has completed the loading of data, so you can either manipulate that data into the format DataTables expects based upon its configuration (columns.data
) or so you can use the data contained in the JSON response from the server for other parts of the page.
This event can be seen as the event complement to the ajax.dataSrc
option (which can also be used to manipulate and intercept the data from the Ajax request). Generally you would want to do data manipulation in the dataSrc
callback and use events for intercepting the data.
Note that this event is called before DataTables has processed the new data from the server, so the returned data will not have been drawn on page when this event fires.
Additionally, as of DataTables 1.10.7 this event is triggered by both success and error conditions when the Ajax request completed (i.e. it is always triggered regardless of the outcome of the Ajax request). Prior to 1.10.7 it was only triggered by a successful request. The json
parameter (3rd passed in) for the event handler will be null
if an error has occurred and the xhr
parameter (4th) can be used to determine the error details if required.
Please note that, as with all DataTables emitted events, the event object has a DataTables API instance available on it (the first parameter). Additionally, the events are triggered with the dt
namespace. As such, to listen for this event, you must also use the dt
namespace by simply appending .dt
to your event name, as shown in the example below.
Type
function function( e, settings, json, xhr )
- Parameters:
Name Type Optional 1 e
No jQuery event object
2 settings
No DataTables settings object
3 json
No Data returned from the server. This will be
null
if triggered by the Ajax error callback.4 xhr
No Since 1.10.7: jQuery XHR object that can be used to access the low level Ajax options.
- Returns:
Since 1.10.7 you can return
true
to indicate to DataTables that it should not trigger itsdt-error
event if you have handled an error condition yourself.
Examples
Pre-process the data returned from the server:
$('#example')
.on('xhr.dt', function (e, settings, json, xhr) {
for (var i = 0, ien = json.aaData.length; i < ien; i++) {
json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two;
}
// Note no return - manipulate the data directly in the JSON object.
})
.DataTable({
ajax: 'data.json'
});
Use a custom property returned from the server in another DOM element:
$('#example')
.on('xhr.dt', function (e, settings, json, xhr) {
$('#status').html(json.status);
})
.DataTable({
ajax: 'data.json'
});
Related
The following options are directly related and may also be useful in your application development.