Skip to content
Permalink
Browse files

Changed dataConverters key format.

  • Loading branch information...
unknown authored and jaubourg committed Dec 24, 2010
1 parent 524bf39 commit 22e28b01e60e87b2454f88ca128fb84916b13564
Showing with 19 additions and 30 deletions.
  1. +5 −20 src/ajax.js
  2. +2 −4 src/transports/jsonp.js
  3. +1 −1 src/transports/script.js
  4. +6 −4 src/xhr.js
  5. +5 −1 test/unit/ajax.js
@@ -223,36 +223,21 @@ jQuery.extend({
},

// List of data converters
// 1) key format is "source_type => destination_type" (spaces required)
// 1) key format is "source_type destination_type" (a single space in-between)
// 2) the catchall symbol "*" can be used for source_type
dataConverters: {

// Convert anything to text
"* => text": function(data) {
return "" + data;
},
"* text": window.String,

This comment has been minimized.

@Krinkle

Krinkle Feb 20, 2013

Member

Why window.String instead of String? They're reliable globals in the language (not just in the browser API), also whitelisted in JSHint.

Or is this to allow better minification? Afaik it can only optimise the host object name that is locally aliased, not the property. So at best this'd become a.String.

This comment has been minimized.

@rwaldron

rwaldron Feb 20, 2013

Member

IIRC, two years ago we still used JSLint and it probably gave you warnings for using String, I'm sure this can change now

This comment has been minimized.

@Krinkle

Krinkle Feb 20, 2013

Member

Looks like this is the only mention of \.(Boolean|Number|String|Object|Array|Date|Function|Error) in latest master.

Fixed in GH-1176.


// Text to html (no transformation)
"text => html": function(data) {
return data;
},
"text html": window.String,

// Evaluate text as a json expression
"text => json": jQuery.parseJSON,
"text json": jQuery.parseJSON,

// Parse text as xml
"text => xml": function(data) {
var xml, parser;
if ( window.DOMParser ) { // Standard
parser = new DOMParser();
xml = parser.parseFromString(data,"text/xml");
} else { // IE
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async="false";
xml.loadXML(data);
}
return xml;
}
"text xml": jQuery.parseXML
}
},

@@ -70,18 +70,16 @@ jQuery.xhr.prefilter("json jsonp", function(s) {
}, s.complete ];

// Use data converter to retrieve json after script execution
s.dataConverters["script => json"] = function() {
s.dataConverters["script json"] = function() {
if ( ! responseContainer ) {
jQuery.error("Callback '" + jsonpCallback + "' was not called");
jQuery.error( jsonpCallback + " was not called" );
}
return responseContainer[ 0 ];
};

// Delegate to script transport
return "script";

}

});

})( jQuery );
@@ -12,7 +12,7 @@ jQuery.extend( true, jQuery.ajaxSettings , {
},

dataConverters: {
"text => script": jQuery.globalEval
"text script": jQuery.globalEval
}
} );

@@ -254,12 +254,14 @@ jQuery.xhr = function( _native ) {
} else if ( current !== "*" && prev !== current ) {

oneConv = conv1 =
dataConverters[ ( conversion = prev + " => " + current ) ] ||
dataConverters[ "* => " + current ];
dataConverters[ ( conversion = prev + " " + current ) ] ||
dataConverters[ "* " + current ];

console.log( conversion );

if ( ! oneConv && prev !== "text" && current !== "text" ) {
conv1 = dataConverters[ prev + " => text" ] || dataConverters[ "* => text" ];
conv2 = dataConverters[ "text => " + current ];
conv1 = dataConverters[ prev + " text" ] || dataConverters[ "* text" ];
conv2 = dataConverters[ "text " + current ];
}
if ( oneConv || conv1 && conv2 ) {
response = oneConv ? conv1( response ) : conv2( conv1( response ) );
@@ -707,6 +707,10 @@ test("jQuery.ajax - xml: non-namespace elements inside namespaced elements (over
equals( jQuery("jsconf", resp).length, 1, 'jsconf in responseXML' );
equals( jQuery("thing", resp).length, 2, 'things in responseXML' );
start();
},
error: function(_1,_2,error) {
ok( false, error );
start();
}
});
});
@@ -1487,7 +1491,7 @@ test("jQuery.ajax() - json by content-type disabled with options", function() {
},
success: function( text ) {
equals( typeof text , "string" , "json wasn't auto-determined" );
var json = this.dataConverters["text => json"]( text );
var json = this.dataConverters["text json"]( text );
ok( json.length >= 2, "Check length");
equals( json[0].name, 'John', 'Check JSON: first, name' );
equals( json[0].age, 21, 'Check JSON: first, age' );

0 comments on commit 22e28b0

Please sign in to comment.
You can’t perform that action at this time.