我有以下代码来修剪URL以检查参数是否存在。例如,如果网址为http://localhost:3000/page?name=jack?number=2000
,则代码应为subString
2000
。可能存在URL中不存在number参数的情况。
var url = window.location.href;
var subString = url.substring(url.lastIndexOf('number=') + 7);
alert(subString);
alert(subString.length);
if (subString.length <= 0) {
//logic here
}
这不按预期工作。无论出于何种原因,当number参数不在URL中时,subString将成为完整的URL。但是,当有一个数字时,它工作正常。我该如何解决这个问题?
答案 0 :(得分:1)
我会使用下面的方法,它符合来自querystring的进一步提取变量
<强>功能强>
var getUrlParams = function()
{
var match,
pl = /\+/g, // Regex for replacing addition symbol with a space
search = /([^&=]+)=?([^&]*)/g,
decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
query = window.location.search.substring(1);
var urlParams = {};
while (match = search.exec(query))
urlParams[decode(match[1])] = decode(match[2]);
return urlParams;
}
<强>用法强>
var param = getUrlParams();
var number = param["number"];
答案 1 :(得分:0)
首先检查当前number=
中的indexOf URL
。如果它返回-1
,则表示number
中没有URL
参数。
带数字参数的DEMO:
var url = "http://localhost:3000/page?name=jack?number=2000";
if(url.indexOf('number=') != -1) {
var subString = url.substring(url.lastIndexOf('number=') + 7);
alert(subString);
alert(subString.length);
} else {
alert("no number param");
}
没有数字参数的DEMO:
var url = "http://localhost:3000/page?name=jack";
if(url.indexOf('number=') != -1) {
var subString = url.substring(url.lastIndexOf('number=') + 7);
alert(subString);
alert(subString.length);
} else {
alert("no number param");
}