From: Anton Kovalyov <anton@kovalyov.net>
Date: Tue, 1 Feb 2011 23:32:29 +0000 (+0100)
Subject: Fixes #7945. Make jQuery.param() serialize plain objects with a property named jquery... 
X-Git-Url: http://git.asbjorn.it/?a=commitdiff_plain;h=fdd4101fe93321f33b916a92b5def1328ea331b3;p=jquery.git

Fixes #7945. Make jQuery.param() serialize plain objects with a property named jquery correctly.
---

diff --git a/src/ajax.js b/src/ajax.js
index 4c3f1dd..1a19d0c 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -698,7 +698,7 @@ jQuery.extend({
 		}
 
 		// If an array was passed in, assume that it is an array of form elements.
-		if ( jQuery.isArray( a ) || a.jquery ) {
+		if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
 			// Serialize the form elements
 			jQuery.each( a, function() {
 				add( this.name, this.value );
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index 3041834..b810313 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -930,7 +930,7 @@ test("serialize()", function() {
 });
 
 test("jQuery.param()", function() {
-	expect(23);
+	expect(25);
 
 	equals( !jQuery.ajaxSettings.traditional, true, "traditional flag, falsy by default" );
 
@@ -965,6 +965,11 @@ test("jQuery.param()", function() {
 	equals( jQuery.param({"foo": {"bar": [], foo: 1} }), "foo%5Bbar%5D=&foo%5Bfoo%5D=1", "Empty array param" );
 	equals( jQuery.param({"foo": {"bar": {}} }), "foo%5Bbar%5D=", "Empty object param" );
 
+	// #7945
+	equals( jQuery.param({"jquery": "1.4.2"}), "jquery=1.4.2", "Check that object with a jQuery property get serialized correctly" );
+
+	equals( jQuery.param(jQuery("#form :input")), "action=Test&text2=Test&radio1=on&radio2=on&check=on&=on&hidden=&foo%5Bbar%5D=&name=name&search=search&button=&=foobar&select1=&select2=3&select3=1&select4=1&select5=3", "Make sure jQuery objects are properly serialized");
+
 	jQuery.ajaxSetup({ traditional: true });
 
 	var params = {foo:"bar", baz:42, quux:"All your base are belong to us"};