From a6ce3031871aca7c067672e91d298dd2a5bf176c Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=B6rn=20Zaefferer?= Date: Mon, 4 Dec 2006 19:37:49 +0000 Subject: [PATCH 1/1] Simplified XMLHttpRequest shadow (tested on 5.5, 6 and 7); Introduced preprocess callback (#384) - IE seems to fail to send the correct headers --- src/ajax/ajax.js | 15 ++++++++++----- src/ajax/ajaxTest.js | 17 +++++++++++++++++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/ajax/ajax.js b/src/ajax/ajax.js index d56ae0f..fe83993 100644 --- a/src/ajax/ajax.js +++ b/src/ajax/ajax.js @@ -134,10 +134,7 @@ jQuery.fn.extend({ // If IE is used, create a wrapper for the XMLHttpRequest object if ( jQuery.browser.msie && typeof XMLHttpRequest == "undefined" ) XMLHttpRequest = function(){ - return new ActiveXObject( - navigator.userAgent.indexOf("MSIE 5") >= 0 ? - "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP" - ); + return new ActiveXObject("Microsoft.XMLHTTP"); }; // Attach a bunch of functions for handling common AJAX events @@ -487,6 +484,9 @@ jQuery.extend({ * (Boolean) async - By default, all requests are send asynchronous (set to true). * If you need synchronous requests, set this option to false. * + * (Function) preprocess - A pre-callback to set custom headers etc., the + * XMLHttpRequest is passed as the only argument. + * * @example $.ajax({ * type: "GET", * url: "test.js", @@ -524,7 +524,8 @@ jQuery.extend({ data: null, contentType: "application/x-www-form-urlencoded", processData: true, - async: true + async: true, + preprocess: null }, s); // if data available @@ -565,6 +566,10 @@ jQuery.extend({ // Make sure the browser sends the right content length if ( xml.overrideMimeType ) xml.setRequestHeader("Connection", "close"); + + // Allow custom headers/mimetypes + if( s.preprocess ) + s.preprocess(xml); // Wait for a response to come back var onreadystatechange = function(isTimeout){ diff --git a/src/ajax/ajaxTest.js b/src/ajax/ajaxTest.js index 98f7cfc..a84df1d 100644 --- a/src/ajax/ajaxTest.js +++ b/src/ajax/ajaxTest.js @@ -277,4 +277,21 @@ test("$.ajax - xml: non-namespace elements inside namespaced elements", function start(); } }); +}); + +test("$.ajax - preprocess", function() { + expect(1); + stop(); + var customHeader = "value-for-custom-header"; + $.ajax({ + url: "data/name.php", + data: {'req': true}, + preprocess: function(xml) { + xml.setRequestHeader('customHeader', customHeader) + }, + success: function(data) { + ok( data == customHeader, "check return value, should be the custom header sent" ); + start(); + } + }); }); \ No newline at end of file -- 1.7.10.4