Dear community,
After looking around I found several disussions which are also treating the problem that an ajax request is done twice when using server side processing. For example: http://datatables.net/forums/discussion/6576/datatables-table-loads-twice-first-time-without-table-data/p1
Anyway, I'm still confused about it and do not really understand why there are two ajax requests? In my case, it just causes to query the database twice which causes performance issues. My actual configuration of the datatable looks like this:
As you can see, I added a further property called aoAjaxData in order to pass content from further text boxes on the website. After a search button is clicked, the function search() will be executed. The first time, the ajax request occures, the values of the text boxes is passed to my ajax request handler. During the second request, those information is missing. Instead I get the initial data of the aoAjaxData property passed which is
So, how can I tell the datatables to do the request only once or what would be a clean way to distinguish on the server side the first request from the second request?
Kind regards
Samuel
P.s: Unfortunately I can not post a link to the website because its an intranet project.
After looking around I found several disussions which are also treating the problem that an ajax request is done twice when using server side processing. For example: http://datatables.net/forums/discussion/6576/datatables-table-loads-twice-first-time-without-table-data/p1
Anyway, I'm still confused about it and do not really understand why there are two ajax requests? In my case, it just causes to query the database twice which causes performance issues. My actual configuration of the datatable looks like this:
var oTable = null; $(document).ready(function () { oTable = $('#example').dataTable({ "bFilter": false, "bServerSide": true, "sPaginationType": "full_numbers", "sAjaxSource": "datareq", "aoColumnDefs": [{ "aTargets": [7], "mData": 7, "mRender": function (data, type, full) { return '<a href=ManageAccounts.aspx?miloeid=' + data + '><img src="../Images/edit_icon_large.png"></a>' } }], "aoAjaxData": [{ "name": "sCustomSearch0", "value": "Marco" }, { "name": "sCustomSearch1", "value": "Pedrazzini" }], "fnServerData": function (sSource, aoData, fnCallback, oSettings) { if (oSettings.oInit.aoAjaxData !== undefined && oSettings.oInit.aoAjaxData != null) { if (Array.isArray(oSettings.oInit.aoAjaxData)) { aoData = aoData.concat(oSettings.oInit.aoAjaxData); } else { aoData.push(oSettings.oInit.aoAjaxData); } } oSettings.jqXHR = $.ajax({ "dataType": "json", "type": "POST", "url": sSource, "data": aoData, "success": fnCallback }) } }); }); function search() { oTable.fnSettings().oInit.aoAjaxData = [{ "name": "sFirstname", "value": $('#DefaultContent_PersonFirstnameSearchTextBox').val() }, { "name": "sLastname", "value": $('#DefaultContent_PersonLastnameSearchTextBox').val() }, { "name": "sNumber", "value": $('#DefaultContent_PersonNumberSearchTextBox').val() }, { "name": "sInsuranceNumber", "value": $('#DefaultContent_PersonInsuranceNbrSearchTextBox').val() }]; oTable.fnDraw(); }
As you can see, I added a further property called aoAjaxData in order to pass content from further text boxes on the website. After a search button is clicked, the function search() will be executed. The first time, the ajax request occures, the values of the text boxes is passed to my ajax request handler. During the second request, those information is missing. Instead I get the initial data of the aoAjaxData property passed which is
"aoAjaxData": [{ "name": "sCustomSearch0", "value": "Marco" }, { "name": "sCustomSearch1", "value": "Pedrazzini" }]
So, how can I tell the datatables to do the request only once or what would be a clean way to distinguish on the server side the first request from the second request?
Kind regards
Samuel
P.s: Unfortunately I can not post a link to the website because its an intranet project.