Removed dataCheckers, added true as possible value for dataConverters indicating...
[jquery.git] / src / ajax.js
index da130fa..5c655b5 100644 (file)
@@ -181,12 +181,7 @@ jQuery.extend({
                xhr: function() {
                        return new window.XMLHttpRequest();
                },
-               xhrResponseFields: {
-                       xml: "XML",
-                       text: "Text",
-                       json: "JSON"
-               },
-                       
+
                accepts: {
                        xml: "application/xml, text/xml",
                        html: "text/html",
@@ -194,84 +189,45 @@ jQuery.extend({
                        json: "application/json, text/javascript",
                        "*": "*/*"
                },
-               
+
                autoDataType: {
                        xml: /xml/,
                        html: /html/,
                        json: /json/
                },
-               
+
                // Prefilters
                // 1) They are useful to introduce custom dataTypes (see transport/jsonp for an example)
                // 2) These are called:
                //    * BEFORE asking for a transport
                //    * AFTER param serialization (s.data is a string if s.processData is true)
-               // 3) They MUST be order agnostic
-               prefilters: [],
-               
+               // 3) key is the dataType
+               // 4) the catchall symbol "*" can be used
+               // 5) execution will start with transport dataType and THEN continue down to "*" if needed
+               prefilters: {},
+
                // Transports bindings
                // 1) key is the dataType
                // 2) the catchall symbol "*" can be used
                // 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");
-                               }
-                       }
-               },
-               
+               transports: {},
+
                // 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 to html (no transformation)
-                       "text => html": function(data) {
-                               return data;
-                       },
-                       
+                       "* text": window.String,
+
+                       // 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
                }
        },
 
@@ -343,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.