Code could be reduced and flexibility increase by adding a "headers" key to the ajaxSettings defaults, which could be used to specify additional headers to send with each AJAX request.
The following documents what changes need to be made:
Add a "headers" key to the ajaxSettings defaults:
ajaxSettings: {
global: true,
type: "GET",
timeout: 0,
contentType: "application/x-www-form-urlencoded",
processData: true,
async: true,
data: null,
headers: {"X-Requested-With": "XMLHttpRequest"}
},
Remove the following lines:
// Set header so the called script knows that it's an XMLHttpRequest
xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");
// Make sure the browser sends the right content length
if ( xml.overrideMimeType )
xml.setRequestHeader("Connection", "close");
Add the following line:
// supply any additional mapped headers
for( var k in s ) xml.setRequestHeader(k, s[k]);
That's it! This will make it easier to add headers to a request, reduces the code and removes the old "Connection: close" fix for older Gecko-based browsers (which are no longer supported by jQuery anyway.)
-Dan