別の「単純な」質問で申し訳ありませんが、URLからGET変数を読み取る簡単な方法はありますか。例。私はURLを持っていますhttp://www.domain.com/page.php?var1=1
私の場合、変数は1つだけです。つまり、var1
またはvar2
(変数は変更できますが、URLごとに1つしかありません)。私が見たすべてのtutsは、「シングルトン」ではなく配列に関連しています。OK配列ソリューションの方が良いかもしれませんが、これは単純な単一のget変数です。助言がありますか?前もって感謝します
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番目のスニペットを使用することもできます。
これをデフォルトのjavascriptファイルで使用します。
var get = [];
location.search.replace('?', '').split('&').forEach(function (val) {
split = val.split("=", 2);
get[split[0]] = split[1];
});
これで、名前でそれらを使用できます。
get["var1"]
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;
}
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'
}