// Replace the =? sequence both in the query string and the data
if ( s.data )
- s.data = s.data.replace(jsre, "=" + jsonp);
+ s.data = (s.data + "").replace(jsre, "=" + jsonp);
s.url = s.url.replace(jsre, "=" + jsonp);
// We need to make sure
// If we're requesting a remote document
// and trying to load JSON or Script
- if ( !s.url.indexOf("http") && s.dataType == "script" ) {
+ if ( !s.url.indexOf("http") && ( s.dataType == "script" || s.dataType =="json" ) ) {
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.src = s.url;
// Handle Script loading
- if ( !jsonp && (s.success || s.complete) ) {
+ if ( !jsonp ) {
var done = false;
// Attach handlers for all browsers
s.beforeSend(xml);
if ( s.global )
- jQuery.event.trigger("ajaxSend", [xml, s]);
+ jQuery.event.trigger("ajaxSend", [xml, s]);
// Wait for a response to come back
var onreadystatechange = function(isTimeout){
// Determines if an XMLHttpRequest was successful or not
httpSuccess: function( r ) {
try {
+ // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
return !r.status && location.protocol == "file:" ||
- ( r.status >= 200 && r.status < 300 ) || r.status == 304 ||
+ ( r.status >= 200 && r.status < 300 ) || r.status == 304 || r.status == 1223 ||
jQuery.browser.safari && r.status == undefined;
} catch(e){}
return false;