]> source.dussan.org Git - jquery.git/commitdiff
Serialize: jQuery.param: return empty string when given null/undefined
authorTimmy Willison <4timmywil@gmail.com>
Wed, 20 Jun 2018 16:07:44 +0000 (12:07 -0400)
committerGitHub <noreply@github.com>
Wed, 20 Jun 2018 16:07:44 +0000 (12:07 -0400)
Fixes gh-2633
Close gh-4108

src/serialize.js
test/unit/serialize.js

index 30fcf98cc6b0cb6ed36c392306def55b374b7536..44d3606b359d035752cdeeb40f66316a744cce10 100644 (file)
@@ -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 ) ) ) {
 
index 9d0afd7c32b8d4d87576caf2503202d227addaea..604d72a2134031e284a3d37fc194d1494e1b716f 100644 (file)
@@ -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 ) {