2009-08-21 7 views

Répondre

73
var field = 'q'; 
var url = window.location.href; 
if(url.indexOf('?' + field + '=') != -1) 
    return true; 
else if(url.indexOf('&' + field + '=') != -1) 
    return true; 
return false 
+6

chemins de retour multiples est un choix personnel, je les utilise parce que je pense qu'ils conduisent à un code plus propre, car ils me aider à éviter emboîtés si des déclarations et montrent exactement ce qui se passe à un certain moment dans le code. Comme pour les cas stict, les côtés gauche et droit seront toujours des nombres, alors quelle différence ferait le passage aux opérateurs d'égalité stricte? – LorenVS

+4

Code de nettoyage? ... Pourquoi ne pas simplement retourner le test indexOf, au lieu de le placer dans une instruction IF préliminaire totalement inutile. – James

+0

Parce que pour retourner l'index de test, je devrais les mettre tous les deux dans une seule ligne, ce qui, dans mon esprit, serait plus difficile à lire. Surtout en considérant ce code était dans le but de démonstration – LorenVS

0

Je l'ai utilisé this library avant qui fait un très bon travail de ce que vous êtes après. Plus précisément: -

qs.contains(name) 
    Returns true if the querystring has a parameter name, else false. 

    if (qs2.contains("name1")){ alert(qs2.get("name1"));} 
89

Vous pouvez également utiliser une expression régulière:

/[?&]q=/.test(location.search) 
+4

Je trouve que c'est la solution la plus simple. –

+0

en fait cela ressemblerait plus à: if (! New RegExp ("[? &] HfPageToken ="). Test (s.données)) // si les données hfPageToken ne sont pas déjà présentes dans la requête { s.data = s.data? [s.data, tokenParam] .join ("&"): tokenParam; } –

+0

Génie, merci. –

11

La plaine exemple de code javascript qui répond à votre question littéralement:

return location.search.indexOf('q=')>=0; 

La plaine javascript exemple de code qui tente pour trouver si le paramètre q existe et s'il a une valeur:

var queryString=location.search; 
var params=queryString.substring(1).split('&'); 
for(var i=0; i<params.length; i++){ 
    var pair=params[i].split('='); 
    if(decodeURIComponent(pair[0])=='q' && pair[1]) 
     return true; 
} 
return false; 
+4

Le premier exemple retournera true pour' fooq = bar' – mickadoo

5

une variante plus, mais presque la même que la solution Gumbos:

var isDebug = function(){ 
    return window.location.href.search("[?&]debug=") != -1; 
}; 
0

Cela devrait aider:

function getQueryParams(){ 
    try{ 
     url = window.location.href; 
     query_str = url.substr(url.indexOf('?')+1, url.length-1); 
     r_params = query_str.split('&'); 
     params = {} 
     for(i in r_params){ 
      param = r_params[i].split('='); 
      params[ param[0] ] = param[1]; 
     } 
     return params; 
    } 
    catch(e){ 
     return {}; 
    } 
} 
3

cette fonction vous aider à obtenir le paramètre d'URL dans JS

function getQuery(q) { 
    return (window.location.search.match(new RegExp('[?&]' + q + '=([^&]+)')) || [, null])[1]; 
} 
3

En utilisant URL:

url = new URL(window.location.href); 

if (url.searchParams.get('test')) { 

} 
Questions connexes