diff options
-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 ) { |