JavaScriptでGETの値を取得する方法

URLのクエリはLocationオブジェクトのsearchプロパティに、すべてのパラメータが1つの文字列として連結されて格納されています。

ここで紹介する方法ではその文字列を分割し、パラメータ名をキーとした連想配列 (オブジェクトのプロパティ) としてGETパラメータを取得できます。

コード

function GetQueryString()
{
    if( 1 < document.location.search.length )
    {
        // 最初の1文字(?記号)を除いた文字列を取得する
        var query = document.location.search.substring( 1 );

        // クエリの区切り記号(&)で文字列を配列に分割する
        var parameters = query.split( '&' );

        var result = new Object();
        for( var i = 0; i < parameters.length; i++ )
        {
            // パラメータ名とパラメータ値に分割する
            var element = parameters[ i ].split( '=' );

            var paramName = decodeURIComponent( element[ 0 ] );
            var paramValue = decodeURIComponent( element[ 1 ] );

            // パラメータ名をキーとして連想配列に追加する
            result[ paramName ] = decodeURIComponent( paramValue );
        }

        return result;
    }

    return null;
}

例えばクエリが?a=1&b=c%26dだとすると、この関数からは{ a="1", b="c&d" }が返されます。

Prototype.js

Prototype.jsを使用するならば、Stringの拡張メソッドであるtoQueryParams()で、

var query = document.location.search.toQueryParams();

と記述するだけです。このメソッドにより上記の関数と同様の結果が返されます。