From: Daniel Nill Date: Fri, 7 Aug 2015 02:49:14 +0000 (-0700) Subject: Serialize: Handle arrays with null values X-Git-Tag: 2.2.0~160 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3d7ce0a65f0707ff01a851822e57ba80adcff075;p=jquery.git Serialize: Handle arrays with null values Closes gh-2436 --- diff --git a/src/serialize.js b/src/serialize.js index 76c43ea15..e0839dc09 100644 --- a/src/serialize.js +++ b/src/serialize.js @@ -28,7 +28,7 @@ function buildParams( prefix, obj, traditional, add ) { // Item is non-scalar (array or object), encode its numeric index. buildParams( - prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", + prefix + "[" + ( jQuery.type( v ) === "object" ? i : "" ) + "]", v, traditional, add diff --git a/test/unit/serialize.js b/test/unit/serialize.js index 047861530..a64593603 100644 --- a/test/unit/serialize.js +++ b/test/unit/serialize.js @@ -1,7 +1,7 @@ QUnit.module( "serialize", { teardown: moduleTeardown } ); QUnit.test( "jQuery.param()", function( assert ) { - assert.expect( 22 ); + assert.expect( 23 ); var params, settings; @@ -77,6 +77,9 @@ QUnit.test( "jQuery.param()", function( assert ) { params = { "test": { "length": 3, "foo": "bar" } }; assert.equal( jQuery.param( params, false ), "test%5Blength%5D=3&test%5Bfoo%5D=bar", "Sub-object with a length property" ); + params = { "test": [ 1, 2, null ] }; + assert.equal( jQuery.param( params, false ), "test%5B%5D=1&test%5B%5D=2&test%5B%5D=", "object with array property with null value" ); + if ( jQuery.ajaxSettings === settings ) { delete jQuery.ajaxSettings; } else {