2017-04-27 46 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