Skip to content

Commit

Permalink
Serialize: jQuery.param: return empty string when given null/undefined
Browse files Browse the repository at this point in the history
Fixes gh-2633
Close gh-4108
  • Loading branch information
timmywil committed Jun 20, 2018
1 parent 4f3b8f0 commit 0645099
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
4 changes: 4 additions & 0 deletions src/serialize.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ jQuery.param = function( a, traditional ) {
encodeURIComponent( value == null ? "" : value ); encodeURIComponent( value == null ? "" : value );
}; };


if ( a == null ) {
return "";
}

// If an array was passed in, assume that it is an array of form elements. // If an array was passed in, assume that it is an array of form elements.
if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {


Expand Down
5 changes: 4 additions & 1 deletion test/unit/serialize.js
Original file line number Original file line Diff line number Diff line change
@@ -1,7 +1,7 @@
QUnit.module( "serialize", { teardown: moduleTeardown } ); QUnit.module( "serialize", { teardown: moduleTeardown } );


QUnit.test( "jQuery.param()", function( assert ) { QUnit.test( "jQuery.param()", function( assert ) {
assert.expect( 23 ); assert.expect( 24 );


var params; var params;


Expand Down Expand Up @@ -72,6 +72,9 @@ QUnit.test( "jQuery.param()", function( assert ) {


params = { "test": [ 1, 2, null ] }; params = { "test": [ 1, 2, null ] };
assert.equal( jQuery.param( params ), "test%5B%5D=1&test%5B%5D=2&test%5B%5D=", "object with array property with null value" ); assert.equal( jQuery.param( params ), "test%5B%5D=1&test%5B%5D=2&test%5B%5D=", "object with array property with null value" );

params = undefined;
assert.equal( jQuery.param( params ), "", "jQuery.param( undefined ) === empty string" );
} ); } );


QUnit.test( "jQuery.param() not affected by ajaxSettings", function( assert ) { QUnit.test( "jQuery.param() not affected by ajaxSettings", function( assert ) {
Expand Down

0 comments on commit 0645099

Please sign in to comment.