2010-03-08 4 views
0

Je suis en train de récupérer un paramètre de chaîne de requête, et pour que mon code estfaçon élégante de récupérer le paramètre chaîne de requête

<a href="Default2.aspx?Id=1&status=pending&year=2010">Click me</a> 

Maintenant, je veux récupérer « status = en attente » et que je fais

var qString = window.location.search.substring(1); 
        var Keys = qString .split('&'); 
       alert(Keys[1]); 

Cela fonctionne très bien, mais je suis hard-coding [1] ici. Y a-t-il une façon élégante de le faire sans coder en dur?

Répondre

2

j'utiliser une expression régulière tels que:

status=([a-zA-Z])+ 

Cela récupérer uniquement ce que l'état est. Si vous savez déjà que la variable est toujours appelée status, mais que vous ne savez pas quelle est la valeur, c'est la bonne façon de procéder.

Pour l'utiliser, vous auriez à faire quelque chose comme ceci:

var qString = window.location.search.substring(1); 
qString.match(/status=([a-zA-Z])+/); 

Hope it helps

+0

va essayer l'expression régulière. – Wondering

1

vous pouvez également envisager une URL dédiée/analyseur querystring, comme this one

+0

Ou essayez l'implémentation d'Adam Vandenberg (http://adamv.com/dev/javascript/querystring) qui ne dépend pas de jQuery. – jou

0

Essayez ceci sur le moyen le plus facile et le meilleur sans coder en dur l'index

params = location.search;

getParam = function (arg) { if (params.indexOf (arg)> = 0) {var PntR = params.indexOf (arg) + arg.length + 1; if (params.indexOf ("&", pntr)> = 0) { retour params.substring (pntr, params.indexOf ("&", pntr)); } else { return paramssubstring (pntr, params.length); } } else { return null; }}

Vous finiriez avec quelque chose comme:

status = someValue

var val = getParam ("statut"); Valait "somevalue"

+0

thnx pour d sln.will jeter un oeil à cette approche – Wondering

Questions connexes