Removed dataCheckers, added true as possible value for dataConverters indicating...
[jquery.git] / src / ajax.js
index a50a039..5c655b5 100644 (file)
@@ -212,62 +212,22 @@ jQuery.extend({
                // 3) selection will start with transport dataType and THEN go to "*" if needed
                transports: {},
 
-               // Checkers
-               // 1) key is dataType
-               // 2) they are called to control successful response
-               // 3) error throws is used as error data
-               dataCheckers: {
-
-                       // Check if data is a string
-                       "text": function(data) {
-                               if ( typeof data != "string" ) {
-                                       jQuery.error("typeerror");
-                               }
-                       },
-
-                       // Check if xml has been properly parsed
-                       "xml": function(data) {
-                               var documentElement = data ? data.documentElement : data;
-                               if ( ! documentElement || ! documentElement.nodeName ) {
-                                       jQuery.error("typeerror");
-                               }
-                               if ( documentElement.nodeName == "parsererror" ) {
-                                       jQuery.error("parsererror");
-                               }
-                       }
-               },
-
                // 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,
 
-                       // Text to html (no transformation)
-                       "text => html": function(data) {
-                               return data;
-                       },
+                       // Text to html (true = no transformation)
+                       "text html": true,
 
                        // 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
                }
        },
 
@@ -339,7 +299,9 @@ function buildParams( prefix, obj, traditional, add ) {
                });
                        
        } else if ( !traditional && obj != null && typeof obj === "object" ) {
-               if ( jQuery.isEmptyObject( obj ) ) {
+               // If we see an array here, it is empty and should be treated as an empty
+               // object
+               if ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {
                        add( prefix, "" );
 
                // Serialize object item.