jQuery: convertire una query string in un oggetto

L'oggetto location possiede la proprietà search che contiene tutti i parametri di una query string GET. Possiamo usare jQuery per convertire tali parametri in un oggetto.

Possiamo definire la seguente funzione di utility:


$.getQueryParameters = function( s ) {
	if ( typeof s == "undefined" ) {
	 	s = location.search;
	}
	var parts = s.substr( s.indexOf( "?" ) + 1 ).split( "&" );
	var result = {};
	for ( var i = 0; i < parts.length; i++ ) {
		var tmp = parts[i].split( "=", 2 );
		var key = decodeURIComponent( tmp[0] );
		var value = decodeURIComponent( tmp[1] );
		if ( key in result ) {
			 result[key].push( value );
		} else {
			result[key] = value;
		} 
	}
	return result;
};

Quindi se la nostra query string è ?foo=bar&baz=test avremo:


var queryObj = $.getQueryParameters();
console.log( queryObj );
// { foo: "bar", baz: "test" }

Torna su