Overwrite Ajax Data for server side processing
Overwrite Ajax Data for server side processing
Hello, I used DataTables heavily in the past, but I'm new 1.10. I love it so far and was excited to get on a project that could make use of this awesome plugin. Anyways, my question is can I overwrite data sent in my ajax call? I don't really need all of the info the default sends and I already have a ajax call that works. I know I've done something similar in the past with older versions of DataTables but don't remember what because I can't look at the code any more, it's been awhile, and with the new version changes.
Example:
I have the following ajax call that works:
return $.ajax({
                type: 'POST',
                contentType: 'application/json; charset=utf-8',
                url:  "Service/GetStuff",
                data: getCriteria(),
                dataType: "json",
                cache: false
            });
Where getCriteria function is something like:
var criteria = {
                "Model": $("#ModelDl").val(),
                "Year": $("#YearDl").val(),
                "Vendor": $("#VendorDl").val(),
                "PageStart": pageStart, //I'm grabbing page and sort info from page.info() and sort.info()
                "PageEnd": pageEnd,
                "Sort": sort,
                "SortDirection": sortDirection
            }
            return '{"criteria":' + JSON.stringify(criteria) + '  }';
This hits a WCF service.
So, I thought I could easily just jam the above ajax call into the DataTable ajax, modify the WCF service to return what DataTables is expecting like this:
table = $("#ResultsTbl").DataTable({
                "order": [[0, "asc"]],
                "pageLength": 50,
                "serverSide": true,
                "ajax": {
                       type: 'POST',
                       contentType: 'application/json; charset=utf-8',
                       url:  "Service/GetStuff",
                       data: getCriteria(),
                       dataType: "json",
                       cache: false
                },
                "columns": [
                            { "data": "ItemNumber" },
                            { "data": "DownloadDateTime" },
                            { "data": "Size" }
                ]
            });
But this immediately throws "Object doesn't support this property or method" in MicrosoftAjax.js. It says a "replace" function is undefined. Pretty vague issue, I know, but is this not possible or am I doing it wrong? Thanks in advance for any help.
Answers
So, I looked into
ajax.dataSrc, and it sounded like what I'm suppose to be using for this. I put it in like so:It now hits the WCF service, but it's sending the default DataTable data, which is not what the service is expecting. It's not even including
ajax.dataSrc, so I must not fully understand it's function.Maybe I should get another cup of coffee, this worked and should have been my first attempt/thought:
Oops, sorry, everyone. Thanks again!