从一个页面跳转到另一个页面,有时候需要在URL传递一些参数到另一个页面。怎样从url把参数获取出来呢?
比如一个url:
http://write.blog.youkuaiyun.com/postedit?ref=toolbar&ticket=ST-505085-3Y9fMheUNbFKcL5sqk5X-passport.youkuaiyun.com
首先使用window.location.search,返回当前url的查询部分,?号之后的字符串(包括?);
?ref=toolbar&ticket=ST-505085-3Y9fMheUNbFKcL5sqk5X-passport.youkuaiyun.com
最开始想是使用slice()或者使用substring()获取属性与属性值,但是这样的做法很不灵活。
最后使用对象来保存键名和键值。
var getFragment = function () {
if (window.location.search.indexOf("?") === 0) { //判断url是否带有参数
return parseQueryString(window.location.search.substr(1));
} else {
return {};
}
function parseQueryString(queryString) {
var data = {},
pairs, pair, separatorIndex, escapedKey, escapedValue, key, value;
if (queryString === null) { //?号后为空字符串
return data;
}
pairs = queryString.split("&");//split()将字符串转化为数组,当queryString字符串无&分隔号
for (var i = 0; i < pairs.length; i++) { //返回只包含queryString的数组
pair = pairs[i];
separatorIndex = pair.indexOf("="); //只有键名无键值
if (separatorIndex === -1) {
escapedKey = pair;
escapedValue = null;
} else {
escapedKey = pair.substr(0, separatorIndex);
escapedValue = pair.substr(separatorIndex + 1);
}
key = decodeURIComponent(escapedKey); //解码
value = decodeURIComponent(escapedValue);
data[key] = value;
}
return data;
}
};