web-dev-qa-db-ja.com

URLJQueryのGET変数を読み取ります

別の「単純な」質問で申し訳ありませんが、URLからGET変数を読み取る簡単な方法はありますか。例。私はURLを持っていますhttp://www.domain.com/page.php?var1=1私の場合、変数は1つだけです。つまり、var1またはvar2(変数は変更できますが、URLごとに1つしかありません)。私が見たすべてのtutsは、「シングルトン」ではなく配列に関連しています。OK配列ソリューションの方が良いかもしれませんが、これは単純な単一のget変数です。助言がありますか?前もって感謝します

16
Russell Parrott
var split = location.search.replace('?', '').split('=')

split[0]は変数名、split[1]は変数値です。実際には、そのコードにはjQueryは必要ありません;)

Twizのコメントに関しては、複数の変数の分割は次のように行うことができます。

var split = location.search.replace('?', '').split('&').map(function(val){
  return val.split('=');
});

変数名にはsplit[index][0]で、値にはsplit[index][1]でアクセスできます。

もちろん、1つの変数に対して最初のスニペットの代わりに2番目のスニペットを使用することもできます。

41
usoban

これをデフォルトのjavascriptファイルで使用します。

var get = [];
location.search.replace('?', '').split('&').forEach(function (val) {
    split = val.split("=", 2);
    get[split[0]] = split[1];
});

これで、名前でそれらを使用できます。

get["var1"]
4
Tiele Declercq

Varが存在する場合、urlから指定されたvar名の値を返すこの関数を使用できます。それ以外の場合は、空の文字列を取得します。

function getUrlValue(varName) {
    var split = $(location).attr('href').split('?');
    var value = '';
    if (split.length == 2) {
        split = split[1].split('&');
        for (var i = 0; i < split.length; i+=1) {
            var keyValue = split[i].split('=');
            if (keyValue.length == 2 && keyValue[0] == varName) {
                value = keyValue[1];
                break;
            }
        }
    }
    return value;
}
0
ungalcrys

ES2019を使用してオブジェクトを作成するには:

let GET = Object.fromEntries( location.search
                                      .replace( '?', '' )
                                      .split( '&' )
                                      .map( i => i.split( '=' ) ) );

Object.fromEntries メソッドは、配列からオブジェクトを作成します。

URLの場合http://www.example.com/page?var1=1&var2=2上記のコードはオブジェクトを返します

{
  var1: '1',
  var2: '2'
}
0
jla