2017年8月26日土曜日

JavaScriptでURLパラメータを分割

 いつも忘れるのでメモっとく。

 以下の関数は、引数無しで呼ぶとページのURLパラメータを返す。引数にパラメータの文字列を入れると、それを分割して返す。
 XMLHttpRequestとか使う時に、request.responseURL.slice(request.responseURL.indexOf("?"))みたいなのを引き数に渡すと、リクエストした際のパラメータを取り出すことができる。ま、どっかにメモっとけばいいだけという話なのだけど。
 戻り値はオブジェクトに格納されるので、forとかで回したり、必用な値だけキーで取り出したりできる。
 あんまり詳しく動作確認してない。

function getURLparameterStrings(url) {
    if (url === void 0) {
        url = window.location.search;
    }

    let result = [];
    if (1 < url.length && url.substr(0, 1) === "?") {
        let query = url.substring(1);
        let params = query.split('&');

        for (let i = 0; i < params.length; i++) {
            let element = params[i].split('=');

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

            if (element.length == 1) {
                result[paramName] = void 0;
            } else if (element.length == 2) {
                result[paramName] = paramValue;
            }
        }
    }

    return (result);
}


fix(2017/08/26)
 パラメータのないキーに"undefined"の文字列が入る問題を修正。

0 件のコメント:

コメントを投稿