JavaScript でクエリ文字列の値を取得するにはどうすればいいですか? 質問する

JavaScript でクエリ文字列の値を取得するにはどうすればいいですか? 質問する

プラグインを使わずに取得する方法はありますか?クエリ文字列jQuery 経由 (または使用しない) で値を取得しますか?

もしそうなら、どうやって?そうでない場合、それを実行できるプラグインはありますか?

ベストアンサー1

使用URL検索パラメータクエリ文字列からパラメータを取得します。

例えば:

const urlParams = new URLSearchParams(window.location.search);
const myParam = urlParams.get('myParam');

更新: 2022年1月

使用Proxy()もっと早く使用するよりもObject.fromEntries()より優れたサポートが受けられます。

このアプローチには、クエリ パラメータを反復処理できなくなるという注意点があります。

const params = new Proxy(new URLSearchParams(window.location.search), {
  get: (searchParams, prop) => searchParams.get(prop),
});
// Get the value of "some_key" in eg "https://example.com/?some_key=some_value"
let value = params.some_key; // "some_value"

更新: 2021年6月

すべてのクエリ パラメータが必要な特定のケース:

const urlSearchParams = new URLSearchParams(window.location.search);
const params = Object.fromEntries(urlSearchParams.entries());

更新: 2018年9月

使用できますURL検索パラメータシンプルで適切な(ただし完全ではない)ブラウザサポート

const urlParams = new URLSearchParams(window.location.search);
const myParam = urlParams.get('myParam');

オリジナル

この目的には jQuery は必要ありません。純粋な JavaScript だけを使用できます。

function getParameterByName(name, url = window.location.href) {
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}

使用法:

// query string: ?foo=lorem&bar=&baz
var foo = getParameterByName('foo'); // "lorem"
var bar = getParameterByName('bar'); // "" (present with empty value)
var baz = getParameterByName('baz'); // "" (present with no value)
var qux = getParameterByName('qux'); // null (absent)

注意: パラメータが複数回存在する場合 ( ?foo=lorem&foo=ipsum)、最初の値 ( ) が取得されますlorem。これについては標準はなく、使用法はさまざまです。たとえば、次の質問を参照してください。重複した HTTP GET クエリキーの権威ある位置

注意: この関数は大文字と小文字を区別します。大文字と小文字を区別しないパラメータ名を使用する場合は、RegExpに「i」修飾子を追加する

注: no-useless-escape eslint エラーが発生する場合は、name = name.replace(/[\[\]]/g, '\\$&');に置き換えることができますname = name.replace(/[[\]]/g, '\\$&')


これは新しいURLSearchParams 仕様同じ結果をより簡潔に得るには、「URL検索パラメータ" 下に。

おすすめ記事