2017-04-27 2 views
0

パラメータが存在するかどうかを確認するためにURLをトリミングするには、次のコードがあります。たとえば、URLがhttp://localhost:3000/page?name=jack?number=2000の場合、subString2000となります。 numberパラメータが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-value-in-javascript) – tanmay

+0

'var substring = location.search && location.search.match(/ \ d + /)'を試してください – gurvinder372

+0

このリンクを見てください。 http://stackoverflow.com/questions/901115/how-can-i-get-query-value-in-javascript –

答えて

0

まずチェックindexOfnumber=をクエリ文字列から、あなたのさらなるフェッチ変数を満たし、以下の方法を使用しますURL-1が返された場合、ではnumberパラメータが使用できません。

番号パラメータと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 is not defined 'が返されます。 –

+0

私はタイプミスがあったので、今修正しました。 – ibubi

関連する問題