「GET」パラメータから値を取得する(JavaScript)[重複] 質問する

「GET」パラメータから値を取得する(JavaScript)[重複] 質問する

次のような GET パラメータを含む URL があります。

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

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

ベストアンサー1

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

(で実行されるコードモダンな)ブラウザでは、URL物体(aウェブAPIURLも実装されていますNode.js:

// You can get url_string from window.location.href if you want to work with
// the URL of the current page
var url_string = "http://www.example.com/t.html?a=1&b=3&c=m2-m3-m4-m5"; 
var url = new URL(url_string);
var c = url.searchParams.get("c");
console.log(c);


古いブラウザ(Internet Explorerを含む)の場合は、このポリフィル

また、URL検索パラメータクエリ文字列を抽出し、それに渡しますwindow.location.search.substring(1)


また、この回答の以前のオリジナル バージョンのコードを使用することもできますURL。ただし、上記のポリフィルは堅牢で十分にテストされているため、これよりも強くお勧めします。

にアクセスすると、文字から URL の末尾またはフラグメント識別子 (#foo) の先頭のいずれか早い方までlocation.searchが取得されます。?

次に、次のように解析します。

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.shift());
    var value = decodeURIComponent(pair.join("="));
    // If first entry with this name
    if (typeof query_string[key] === "undefined") {
      query_string[key] = value;
      // If second entry with this name
    } else if (typeof query_string[key] === "string") {
      var arr = [query_string[key], value];
      query_string[key] = arr;
      // If third or later entry with this name
    } else {
      query_string[key].push(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);

おすすめ記事