JQUERY HASH +如何传递额外的变量

时间:2012-03-24 07:36:34

标签: javascript jquery

http://www.domainname.com/#changepassword

我需要使用上面的URL传递一个额外的变量。

我尝试过几种方法,但我不确定最好的方法,例如:

http://www.domainname.com/#changepassword?variable

我正在使用以下JQUERY来捕获HASH:

if (window.location.hash != '') {
    var hash = window.location.hash.substring(1);
    if(hash == 'changepassword') {      // Password Change
        alert('changepassword');
    }
}

如何使用HASH传递额外的变量?捕获HASH和额外变量的最佳方法。

THX

3 个答案:

答案 0 :(得分:0)

我建议您使用jQuery URL插件,而不是自己进行解析:https://github.com/allmarkedup/jQuery-URL-Parser

答案 1 :(得分:0)

您正在将location.hashlocation.search - see here for the explanation

混合

您可以只使用location.hash并在您的"变量"之间放置一个分隔符。 :

例如..如果这是您的网址http://www.domainname.com/#changepassword-variable-another,那么您可以

var hash = window.location.hash.substring(1);
var hasharray = hash.split['-']
if(hasharray[0] == 'changepassword') {      // Password Change
    alert('changepassword');
}

或者您可以使用location.search和以下示例:

网址:http://www.domainname.com/?command=changepassword&var=variable&var2=another

这使用key=value格式,然后使用以下方法访问values

function getQueryString() {
  var result = {}, queryString = location.search.substring(1),
      re = /([^&=]+)=([^&]*)/g, m;

  while (m = re.exec(queryString)) {
    result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
  }

  return result;
}

然后,您可以通过传递函数key

来获取值
var command = getQueryString()["command"];
if(command == 'changepassword') {      // Password Change
    alert('changepassword');
}

答案 2 :(得分:0)

"#ffsf?sdff?sffsfd".match(/(?!\?)\w+/g)

结果:

["ffsf", "sdff", "sffsfd"] // Array

无论如何,你应该更准确地说明你打算做什么。