aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimmy Willison <4timmywil@gmail.com>2018-06-20 12:07:44 -0400
committerGitHub <noreply@github.com>2018-06-20 12:07:44 -0400
commit0645099e027cd0e31a828572169a8c25474e2b5c (patch)
tree27fd4dd921e34a5962607a53c7c1a00c29bebfd9
parent4f3b8f0d0bd2b02960a42e64be0dcbf8073c94bb (diff)
downloadjquery-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.js4
-rw-r--r--test/unit/serialize.js5
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 ) {