+ // Passing null username, generates a login popup on Opera (#2865)
+ if( s.username )
+ xhr.open(type, s.url, s.async, s.username, s.password);
+ else
+ xhr.open(type, s.url, s.async);
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ // Set the correct header, if data is being sent
+ if ( s.data )
+ xhr.setRequestHeader("Content-Type", s.contentType);
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if (jQuery.lastModified[s.url])
+ xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
+ if (jQuery.etag[s.url])
+ xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
+ }