我见过很多jQuery示例,其中参数大小和名称都是未知的。
我的URL只会有一个字符串
http://example.com?sent=yes
我只想检测:
sent存在吗? 它等于"是"吗?
我见过很多jQuery示例,其中参数大小和名称都是未知的。
我的URL只会有一个字符串
http://example.com?sent=yes
我只想检测:
sent存在吗? 它等于"是"吗?
当前回答
从字符串中获取参数:
Object.defineProperty(String.prototype, 'urlParam', {
value: function (param) {
"use strict";
var str = this.trim();
var regex = "[\?&]" + param + "=([^&#]*)";
var results = new RegExp(regex, "i").exec(str);
return (results !== null) ? results[1] : '';
}
});
使用方法:
var src = 'http://your-url.com/?param=value'
console.log(src.urlParam(param)); // returns 'value'
其他回答
我总是把它写成一行。params有变量:
params={};location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){params[k]=v})
多行:
var params={};
window.location.search
.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(str,key,value) {
params[key] = value;
}
);
作为一个函数
function getSearchParams(k){
var p={};
location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){p[k]=v})
return k?p[k]:p;
}
你可以这样用:
getSearchParams() //returns {key1:val1, key2:val2}
or
getSearchParams("key1") //returns val1
这里有一个很棒的图书馆: https://github.com/allmarkedup/purl
这能让你做得更简单
url = 'http://example.com?sent=yes';
sent = $.url(url).param('sent');
if (typeof sent != 'undefined') { // sent exists
if (sent == 'yes') { // sent is equal to yes
// ...
}
}
这个例子假设您正在使用jQuery。你也可以使用它只是简单的javascript,语法会有点不同。
jQuery代码片段,以获取动态变量存储在url作为参数,并将它们存储为JavaScript变量,以供您的脚本使用:
$.urlParam = function(name){
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (results==null) {
return null;
}
return decodeURI(results[1]) || 0;
}
example.com ? param1 = name¶m2 = id = 6
$.urlParam('param1'); // name
$.urlParam('id'); // 6
$.urlParam('param2'); // null
带有空格的参数示例
http://www.jquery4u.com?city=Gold Coast
console.log($.urlParam('city'));
//output: Gold%20Coast
console.log(decodeURIComponent($.urlParam('city')));
//output: Gold Coast
使用普通JavaScript,您可以很容易地获取参数(location.search),获得子字符串(不带?),并通过'&'分隔它,将其转换为数组。
当你遍历urlParams时,你可以再次用'='分割字符串,并将其添加到'params'对象中,作为object[elmement[0]] = element[1]。超级简单,易于访问。
http://www.website.com/?error=userError&type=handwritten
var urlParams = location.search.substring(1).split('&'),
params = {};
urlParams.forEach(function(el){
var tmpArr = el.split('=');
params[tmpArr[0]] = tmpArr[1];
});
var error = params['error'];
var type = params['type'];
我用了这个,很管用。 http://codesheet.org/codesheet/NF246Tzs
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
var first = getUrlVars()["id"];