2017-04-27 44 views
0

我有以下代码修剪URL来检查参数是否存在。例如,如果URL是http://localhost:3000/page?name=jack?number=2000,那么代码应该有subString作为2000。可能会出现数字参数在URL中不存在的情况。如何有条件地修剪URL

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

可能重复的[如何在JavaScript中获取查询字符串值?](http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript) – tanmay

+0

尝试'var substring = location.search && location.search.match(/ \ d + /)' – gurvinder372

+0

请看这个链接。 http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript –

回答

0

首先检查indexOfnumber=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"); 
 
}

1

我会用下面的方法,它符合你的进一步取变量从查询字符串

功能

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"]; 
+0

如果我只是'var number = param [number];',我得到'number没有定义' –

+0

我有一个错字,现在修好了,顺便说一句,你应该在你的代码中插入上面的函数并使用它显示在上面。 – ibubi