diff options
author | Anton Kovalyov <anton@kovalyov.net> | 2011-02-02 00:32:29 +0100 |
---|---|---|
committer | Anton M <obhvsbypqghgc@gmail.com> | 2011-02-02 00:32:29 +0100 |
commit | fdd4101fe93321f33b916a92b5def1328ea331b3 (patch) | |
tree | b902be8825e5db9606e9a1436711f12cc53a2225 | |
parent | fa4c90987fc9aede4de3f41976cda91acad81736 (diff) | |
download | jquery-fdd4101fe93321f33b916a92b5def1328ea331b3.tar.gz jquery-fdd4101fe93321f33b916a92b5def1328ea331b3.zip |
Fixes #7945. Make jQuery.param() serialize plain objects with a property named jquery correctly.
-rw-r--r-- | src/ajax.js | 2 | ||||
-rw-r--r-- | test/unit/ajax.js | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/ajax.js b/src/ajax.js index 4c3f1dd53..1a19d0ca1 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 304183475..b81031384 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"}; |