如何从javascript中的URL中提取查询字符串?
谢谢!
如何从javascript中的URL中提取查询字符串?
谢谢!
您可以轻松构建字典样式集合...
function getQueryStrings() {
var assoc = {};
var decode = function (s) { return decodeURIComponent(s.replace(/\+/g, " ")); };
var queryString = location.search.substring(1);
var keyValues = queryString.split('&');
for(var i in keyValues) {
var key = keyValues[i].split('=');
if (key.length > 1) {
assoc[decode(key[0])] = decode(key[1]);
}
}
return assoc;
}
并像这样使用它......
var qs = getQueryStrings();
var myParam = qs["myParam"];
如果您指的是地址栏中的 URL,则
window.location.search
只会给你查询字符串部分。请注意,这包括开头的问号。
如果您指的是存储在(例如)字符串中的任何随机 URL,您可以通过执行以下操作获取从第一个问号索引开始的子字符串来获取查询字符串:
url.substring(url.indexOf("?"))
这假设 URL 片段部分中的任何问号都已正确编码。如果末尾有目标(即,# 后跟 DOM 元素的 id),它也会包含该目标。
这是我使用的方法...
function Querystring() {
var q = window.location.search.substr(1), qs = {};
if (q.length) {
var keys = q.split("&"), k, kv, key, val, v;
for (k = keys.length; k--; ) {
kv = keys[k].split("=");
key = kv[0];
val = decodeURIComponent(kv[1]);
if (qs[key] === undefined) {
qs[key] = val;
} else {
v = qs[key];
if (v.constructor != Array) {
qs[key] = [];
qs[key].push(v);
}
qs[key].push(val);
}
}
}
return qs;
}
它返回一个字符串和数组的对象,似乎工作得很好。(单个键的字符串,具有多个值的同一个键的数组。)
您需要简单使用以下功能。
function GetQueryStringByParameter(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
- - 如何使用 - -
var QueryString= GetQueryStringByParameter('QueryString');
很直接!
function parseQueryString(){
var assoc = {};
var keyValues = location.search.slice(1).split('&');
var decode = function(s){
return decodeURIComponent(s.replace(/\+/g, ' '));
};
for (var i = 0; i < keyValues.length; ++i) {
var key = keyValues[i].split('=');
if (1 < key.length) {
assoc[decode(key[0])] = decode(key[1]);
}
}
return assoc;
}