X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fajax.js;h=bf3c238473ece848385862d98dd29010a33ab560;hb=b721a2f472b53fec28276d2080d741cf070b686d;hp=d4f2e12714b0634dab19be08f75e36b5db936fdf;hpb=aee221d33c2db2c76639dabeca2b1e3d022e348e;p=jquery.git diff --git a/src/ajax.js b/src/ajax.js index d4f2e12..bf3c238 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -34,6 +34,7 @@ jQuery.fn.extend({ jQuery.ajax({ url: url, type: type, + dataType: "html", data: params, complete: function(res, status){ // If successful, inject the HTML into all the matched elements @@ -150,7 +151,7 @@ jQuery.extend({ lastModified: {}, ajax: function( s ) { - var jsonp, jsre = /=(\?|%3F)/g, status, data; + var jsonp, jsre = /=\?(&|$)/g, status, data; // Extend the settings, but re-extend 's' so that it can be // checked again later (in the test suite, specifically) @@ -200,7 +201,7 @@ jQuery.extend({ if ( s.cache === false && s.type.toLowerCase() == "get" ) { var ts = (new Date()).getTime(); // try replacing _= if it is there - var ret = s.url.replace(/(\?|&)_=.*(&|$)/, "$1_=" + ts + "$2"); + var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2"); // if nothing was replaced, add timestamp to the end s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : ""); } @@ -218,11 +219,13 @@ jQuery.extend({ jQuery.event.trigger( "ajaxStart" ); // If we're requesting a remote document - // and trying to load JSON or Script - if ( !s.url.indexOf("http") && ( s.dataType == "script" || s.dataType =="json" ) ) { + // and trying to load JSON or Script with a GET + if ( (!s.url.indexOf("http") || !s.url.indexOf("//")) && ( s.dataType == "script" || s.dataType =="json" ) && s.type.toLowerCase() == "get" ) { var head = document.getElementsByTagName("head")[0]; var script = document.createElement("script"); script.src = s.url; + if (s.scriptCharset) + script.charset = s.scriptCharset; // Handle Script loading if ( !jsonp ) { @@ -243,7 +246,7 @@ jQuery.extend({ head.appendChild(script); // We handle everything using the script element injection - return; + return undefined; } var requestDone = false; @@ -255,17 +258,20 @@ jQuery.extend({ // Open the socket xml.open(s.type, s.url, s.async); - // Set the correct header, if data is being sent - if ( s.data ) - xml.setRequestHeader("Content-Type", s.contentType); + // 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 ) + xml.setRequestHeader("Content-Type", s.contentType); - // Set the If-Modified-Since header, if ifModified mode. - if ( s.ifModified ) - xml.setRequestHeader("If-Modified-Since", - jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" ); + // Set the If-Modified-Since header, if ifModified mode. + if ( s.ifModified ) + xml.setRequestHeader("If-Modified-Since", + jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" ); - // Set header so the called script knows that it's an XMLHttpRequest - xml.setRequestHeader("X-Requested-With", "XMLHttpRequest"); + // Set header so the called script knows that it's an XMLHttpRequest + xml.setRequestHeader("X-Requested-With", "XMLHttpRequest"); + } catch(e){} // Allow custom headers/mimetypes if ( s.beforeSend ) @@ -355,9 +361,6 @@ jQuery.extend({ // firefox 1.5 doesn't fire statechange for sync requests if ( !s.async ) onreadystatechange(); - - // return XMLHttpRequest to allow aborting the request etc. - return xml; function success(){ // If a local callback was specified, fire it and pass it the data @@ -382,6 +385,9 @@ jQuery.extend({ if ( s.global && ! --jQuery.active ) jQuery.event.trigger( "ajaxStop" ); } + + // return XMLHttpRequest to allow aborting the request etc. + return xml; }, handleError: function( s, xml, status, e ) {