我试图从网址中获取特定的参数,例如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
来自哪里?!
答案 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)