使用jquery获取url参数并输入

时间:2010-12-01 01:20:05

标签: javascript jquery-validate

我试图从网址中获取特定的参数,例如www.internets.com?param=123456

我正在尝试这样的事情......

$j.extend({
  getUrlVars: function(){
   return window.location.href.slice(window.location.href.indexOf('?')).split(/[&?]{1}[\w\d]+=/);
  }
});
var allVars = $j.getUrlVars('param');

奇怪的是变量返回一个逗号,所以在这个例子中它看起来像,123456

来自哪里?!

3 个答案:

答案 0 :(得分:1)

split返回一个子字符串数组,因此逗号来自数组的序列化。

答案 1 :(得分:0)

你要求javascript根据你的正则表达式中的规则将字符串拆分成一个数组,所以字符串“?param = 123456”变成一个数组,其中一切都是=只是一个分隔符,所以它看到两个键:一个空字符串和123456.

编辑 - 你仍然可以使用拆分,只需使用不同的分隔符。 indexOf告诉它在“?”的位置之后查看子字符串,所以如果你在'='上拆分,它将提供一个数组,其中一个值是参数名称(可能带有'?'或'& ',所以只需删除它),下一个值是等号后发送的值。

您还可以使用正则表达式和处理方式进行更深入的处理:

var q = window.location.search; // returns everything after '?'
var regEx = /[^?& =]([\w]*)[^!?& =]/g;
var array = q.match(regEx);
var vars = new Array();
for (var i = 0; i < array.length; i++) {
    if ((i % 2) == 0) {
        vars[array[i]] = array[i + 1];
    }
}

这将为您提供一个数组,其中键是param名称,它们的值是查询字符串中的关联值。

答案 2 :(得分:0)