次のような GET パラメータを含む URL があります。
www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5
の全体の値を取得する必要がありますc
。URL を読み取ろうとしましたが、 しか取得できませんでしたm2
。JavaScript を使用してこれを実行するにはどうすればよいですか?
ベストアンサー1
JavaScript自体には、クエリ文字列パラメータを処理するための機能が組み込まれていません。
(で実行されるコードモダンな)ブラウザでは、URL
物体(aウェブAPI)URL
も実装されています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);