From 705a08bf6a8aadc043285d750629848bb47057a6 Mon Sep 17 00:00:00 2001 From: Konstantin Fedorov Date: Tue, 18 Jul 2017 12:41:43 +0300 Subject: [PATCH] If a query string contains a parameter which is not represented in a form, then elementsByName[name] is undefined, which breaks $.each function and any code that goes after deserialization --- src/jquery.deserialize.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/jquery.deserialize.js b/src/jquery.deserialize.js index 13c00e2..511871e 100644 --- a/src/jquery.deserialize.js +++ b/src/jquery.deserialize.js @@ -262,11 +262,13 @@ var elementsByName = getFieldsByName( this, options.filter ); $.each( data, function( name, values ) { - $.each( elementsByName[ name ], function( elementIndex, element ) { - $.each( values, function( valueIndex, value ) { - update( element, elementIndex, value, valueIndex, options.change ); + if( name in elementsByName ) { + $.each( elementsByName[ name ], function( elementIndex, element ) { + $.each( values, function( valueIndex, value ) { + update( element, elementIndex, value, valueIndex, options.change ); + }); }); - }); + } }); options.complete.call( this );