如何使用参数检索整个URL?

时间:2011-06-25 01:36:24

标签: javascript

我需要使用参数作为字符串检索整个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作为字符串吗?

谢谢!

3 个答案:

答案 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);