我需要使用参数作为字符串检索整个URL。例如,我需要检索以下URL:
http://www.keytometals.com/page.aspx?ID=CheckArticle&site=kts&LN=EN&NM=349
我试过用:
document.location.href,
document.URL,
window.location.href
但它只检索URL的一部分:
http://www.keytometals.com/page.aspx
如何获取包含当前URL及其参数的字符串?
一次更新:我使用了
window.content.document.location.href
我有以下网址:
http://www.keytometals.com/page.aspx?ID=CheckArticle
不幸的是,它仍然是URL的一部分。有人可以帮我解决如何将整个URL作为字符串吗?
谢谢!
答案 0 :(得分:4)
你需要简单的document.location
- 这将包括一切。你需要编写自己的代码来分割它吗?获取查询字符串,然后将其拆分为每个&。
编辑:
实际上,您也可以使用location.search
。这是我为此写的一段摘录:
function loadQueryString(){
var parameters = {};
var searchString = location.search.substr(1);
var pairs = searchString.split("&");
var parts;
for(i = 0; i < pairs.length; i++){
parts = pairs[i].split("=");
var name = parts[0];
var data = decodeURI(parts[1]);
parameters[name] = data;
}
return parameters;
}
params = loadQueryString();
答案 1 :(得分:2)
您应该使用window.location.href
作为整个网址(包括查询字符串)。
请查看Mozilla's documentation以获取更多信息和其他属性。
这是另一篇关于如何Parse query string in JavaScript的好的StackOverflow帖子。
答案 2 :(得分:0)
function getQueryString() {
var key = false, res = {}, itm = null;
// get the query string without the ?
var qs = location.search.substring(1);
// check for the key as an argument
if (arguments.length > 0 && arguments[0].length > 1)
key = arguments[0];
// make a regex pattern to grab key/value
var pattern = /([^&=]+)=([^&]*)/g;
// loop the items in the query string, either
// find a match to the argument, or build an object
// with key/value pairs
while (itm = pattern.exec(qs)) {
if (key !== false && decodeURIComponent(itm[1]) === key)
return decodeURIComponent(itm[2]);
else if (key === false)
res[decodeURIComponent(itm[1])] = decodeURIComponent(itm[2]);
}
return key === false ? res : null;
}
然后你就这样使用它:
// get a single key (if it exists)
var t = getQueryString('site');
console.log(t);
// get the whole thing as an object
t = getQueryString();
console.log(t);