1. ホーム
  2. ジャバスクリプト

[解決済み】「GET」パラメータから値を取得する(JavaScript)【重複】。

2022-03-18 23:20:56

質問

以下のようなGETパラメータを持つURLがあります。

www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5 

の値全体を取得する必要があります。 c . URLを読み込もうとしたのですが、得られたのは m2 . JavaScriptを使用してこれを行うにはどうすればよいですか?

どのように解決するのですか?

JavaScript そのもの には、クエリ文字列のパラメータを処理するためのものは何も組み込まれていません。

最新の)ブラウザで動作するコードでは URL オブジェクト (ブラウザがJSに提供するAPIの一部である)。

var url_string = "http://www.example.com/t.html?a=1&b=3&c=m2-m3-m4-m5"; //window.location.href
var url = new URL(url_string);
var c = url.searchParams.get("c");
console.log(c);


古いブラウザ(Internet Explorerを含む)には このポリフィル または、この回答のオリジナルバージョンで URL :

にアクセスすることができます。 location.search で、これは ? 文字から、URL の末尾またはフラグメント識別子 (#foo) の先頭までのいずれか早いほうを指定します。

すると、こうしてパースできるようになる。

function parse_query_string(query) {
  var vars = query.split("&");
  var query_string = {};
  for (var i = 0; i < vars.length; i++) {
    var pair = vars[i].split("=");
    var key = decodeURIComponent(pair[0]);
    var value = decodeURIComponent(pair[1]);
    // If first entry with this name
    if (typeof query_string[key] === "undefined") {
      query_string[key] = decodeURIComponent(value);
      // If second entry with this name
    } else if (typeof query_string[key] === "string") {
      var arr = [query_string[key], decodeURIComponent(value)];
      query_string[key] = arr;
      // If third or later entry with this name
    } else {
      query_string[key].push(decodeURIComponent(value));
    }
  }
  return query_string;
}

var query_string = "a=1&b=3&c=m2-m3-m4-m5";
var parsed_qs = parse_query_string(query_string);
console.log(parsed_qs.c);

で現在のページのURLからクエリストリングを取得することができます。

var query = window.location.search.substring(1);
var qs = parse_query_string(query);