从一个页面跳转到另一个页面,有时候需要在URL传递一些参数到另一个页面。怎样从url把参数获取出来呢?
比如一个url:
http://write.blog.csdn.net/postedit?ref=toolbar&ticket=ST-505085-3Y9fMheUNbFKcL5sqk5X-passport.csdn.net
首先使用window.location.search,返回当前url的查询部分,?号之后的字符串(包括?);
?ref=toolbar&ticket=ST-505085-3Y9fMheUNbFKcL5sqk5X-passport.csdn.net
最开始想是使用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; } };