23. oktober 2007 - 21:03
Der er
10 kommentarer og 1 løsning
Tilgå parameter i querystring ?
?param1=hej¶m2=med¶m3=dig Hvordan får jeg fat i værdierne fra de forskellige parameter i javascript..? javascript er ikke min stærke side, men har forsøgt mig med window.location.search, men kan ikke rigtig få det til at fungere.. nogen der kan hjælpe ??
Annonceindlæg fra DE-CIX
23. oktober 2007 - 21:16
#1
Det kunne gøre nogenlunde således (nok kluntet i nogen javascript-koderes øjne :)): var params = window.location.search.substr(1).split("&"); function getParam(name) { for(var i=0; i<params.length; i++) { if(params[i].indexOf("=") != -1) if(params[i].substring(0,params[i].indexOf("=")-1).toLowerCase() == name.toLowerCase()) return params[i].substr(params[i].indexOf("=")); } return ""; } NB: Jeg har ikke lige testet grænseværdierne for strengopdelingerne, så det kan være der lige er et lighedstegn for meget med...
23. oktober 2007 - 21:19
#2
<ole> function OCGetVar(sKey) { var oRxp = new RegExp(".*" + sKey + "=(.*?)(&.*)?$"); return location.href.replace(oRxp, "$1"); } alert( OCGetVar("param1") ); /mvh </bole>
23. oktober 2007 - 21:29
#3
Sorry ... det var 'den gamle'! Prøv denne i stedet: function OCGetVar(sKey) { var oRxp = new RegExp(".*\?.*" + sKey + "=(.*?)(&.*)?$"); if(oRxp.test(location.href)) return location.href.replace(oRxp, "$1"); return undefined; }
23. oktober 2007 - 22:14
#4
Hej Ole. Rammer den nederste rigtigt hvis der er nøgler, der er delstrenge af andre nøgler. ( "...?ris=7&is=8&gris=9" OCGEtVar("is") )
23. oktober 2007 - 23:25
#5
Ja, denne her gør 0:) function OCGetVar(sKey) { var oRxp = new RegExp(".*[&?]+" + sKey + "=(.*?)(&.*)?$"); if(oRxp.test(location.href)) return location.href.replace(oRxp, "$1"); return undefined; } ... tak, Erik ;o)
23. oktober 2007 - 23:27
#6
- og nu, du eksplicit spørger om den nederste ... :D
23. oktober 2007 - 23:35
#7
Det kan gøres på flere måder, er jeg sikker på. Jeg fik bikset den her sammen: // test med: ....?ris=7&is=8&gris=9 function GetVar(sKey) { var oRxp = new RegExp("[?&]" + sKey + "=([^&]*)"); var m = oRxp.exec(location.href); if (m == null) { return undefined; } else { return m[1]; } } alert( "ris " + GetVar("ris") ); alert( "is " + GetVar("is") ); alert( "gris " + GetVar("gris") ); Men skal vi ikke også lige klare bøvlet omkring url-encoding for spørgeren?
23. oktober 2007 - 23:52
#8
Det er jo afhængigt af tegnsættet. Hvis man har tomme linjer i dokumentet, kan man f.eks. skrive dette objekt: URIComp = { encode: function(sStr) { if (!this.inited) return this._setFns('encode', sStr); }, decode: function(sStr) { if (!this.inited) return this._setFns('decode', sStr); }, _inited: false, _setFns: function(sMeth, sStr) { var gat = cS = null, a = document.getElementsByTagName("meta"); for (var i=0,j=a.length; i<j; i++) { gat = a[i].attributes.getNamedItem; if ((/Content-Type/i).test(gat("http-equiv").nodeValue)) { cS = gat("content").nodeValue.match(/charset=([a-z0-9-]*)/i); if (cS.length>1) break; cS = null; } } if ( cS&& (/utf/i).test(cS[1])) { this.encode = function(s){return encodeURIComponent(s)}; this.decode = function(s){return decodeURIComponent(s)}; } else { this.encode = function(s){return escape(s)}; this.decode = function(s){return unescape(s).replace(/\+/g," ")}; } this._inited = true; gat = a = cS = null; return this[sMeth](sStr); } }; - og så bruger man det sådan: var myVar = GetVar("ris"); alert( URIComp.decode(myVar) );
28. oktober 2007 - 21:35
#9
olebole smid et svar
29. oktober 2007 - 14:43
#10
Gerne :)
31. oktober 2007 - 14:16
#11
Tak for points :)
Vi tilbyder markedets bedste kurser inden for webudvikling