diff options
author | Timmy Willison <4timmywil@gmail.com> | 2018-06-20 12:07:44 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-20 12:07:44 -0400 |
commit | 0645099e027cd0e31a828572169a8c25474e2b5c (patch) | |
tree | 27fd4dd921e34a5962607a53c7c1a00c29bebfd9 | |
parent | 4f3b8f0d0bd2b02960a42e64be0dcbf8073c94bb (diff) | |
download | jquery-0645099e027cd0e31a828572169a8c25474e2b5c.tar.gz jquery-0645099e027cd0e31a828572169a8c25474e2b5c.zip |
Serialize: jQuery.param: return empty string when given null/undefined
Fixes gh-2633
Close gh-4108
-rw-r--r-- | src/serialize.js | 4 | ||||
-rw-r--r-- | test/unit/serialize.js | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/serialize.js b/src/serialize.js index 30fcf98cc..44d3606b3 100644 --- a/src/serialize.js +++ b/src/serialize.js @@ -70,6 +70,10 @@ jQuery.param = function( a, traditional ) { encodeURIComponent( value == null ? "" : value ); }; + if ( a == null ) { + return ""; + } + // If an array was passed in, assume that it is an array of form elements. if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { diff --git a/test/unit/serialize.js b/test/unit/serialize.js index 9d0afd7c3..604d72a21 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( 23 ); + assert.expect( 24 ); var params; @@ -72,6 +72,9 @@ QUnit.test( "jQuery.param()", function( assert ) { 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" ); + + params = undefined; + assert.equal( jQuery.param( params ), "", "jQuery.param( undefined ) === empty string" ); } ); QUnit.test( "jQuery.param() not affected by ajaxSettings", function( assert ) { |