if one value of key/value pairs is array then treat each array value in part
[jquery.git] / src / ajax / ajax.js
index 129d472..42bc54b 100644 (file)
@@ -64,8 +64,8 @@ jQuery.fn.extend({
         * @name load
         * @type jQuery
         * @param String url The URL of the HTML file to load.
-        * @param Object params A set of key/value pairs that will be sent to the server.
-        * @param Function callback A function to be executed whenever the data is loaded.
+        * @param Object params A set of key/value pairs that will be sent as data to the server.
+        * @param Function callback A function to be executed whenever the data is loaded (parameters: responseText, status and reponse itself).
         * @cat AJAX
         */
        load: function( url, params, callback, ifModified ) {
@@ -107,9 +107,9 @@ jQuery.fn.extend({
                                          // Execute all the scripts inside of the newly-injected HTML
                                          .evalScripts()
                                          // Execute callback
-                                         .each( callback, [res.responseText, status] );
+                                         .each( callback, [res.responseText, status, res] );
                                } else
-                                       callback.apply( self, [res.responseText, status] );
+                                       callback.apply( self, [res.responseText, status, res] );
                        }
                });
                return this;
@@ -597,7 +597,8 @@ jQuery.extend({
         *
         * (String) url - The URL of the page to request.
         *
-        * (String) data - A string of data to be sent to the server (POST only).
+        * (String) data - Data to be sent to the server. If converted to a query
+        * string, if not already a string. Is appended to the url for GET-requests. 
         *
         * (String) dataType - The type of data that you're expecting back from
         * the server (e.g. "xml", "html", "script", or "json").
@@ -708,14 +709,14 @@ jQuery.extend({
                        error: null,
                        dataType: null,
                        data: null,
-                       url: null,
+                       url: null
                }, s);
 
                // if data available
                if ( s.data ) {
                        // convert data if not already a string
                        if (typeof s.data != 'string')
-                       s.data = jQuery.param(s.data)
+                       s.data = jQuery.param(s.data);
                        // append data to url for get requests
                        if( s.type.toLowerCase() == "get" )
                                // "?" + data or "&" + data (in case there are already params)
@@ -891,8 +892,15 @@ jQuery.extend({
                // Otherwise, assume that it's an object of key/value pairs
                } else {
                        // Serialize the key/values
-                       for ( var j in a )
-                               s.push( j + "=" + encodeURIComponent( a[j] ) );
+                       for ( var j in a ) {
+                               //if one value is array then treat each array value in part
+                               if (typeof a[j] == 'object') {
+                                       for (var k = 0; k < a[j].length; k++) {
+                                               s.push( j + "[]=" + encodeURIComponent( a[j][k] ) );
+                                       }
+                               } else {
+                                       s.push( j + "=" + encodeURIComponent( a[j] ) );
+                               }
                }
 
                // Return the resulting serialization