Avatar billede shosho500 Nybegynder
23. oktober 2007 - 21:03 Der er 10 kommentarer og
1 løsning

Tilgå parameter i querystring ?

?param1=hej&param2=med&param3=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 ??
Avatar billede softspot Forsker
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...
Avatar billede olebole Juniormester
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>
Avatar billede olebole Juniormester
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;
}
Avatar billede erikjacobsen Ekspert
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")  )
Avatar billede olebole Juniormester
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)
Avatar billede olebole Juniormester
23. oktober 2007 - 23:27 #6
- og nu, du eksplicit spørger om den nederste ...  :D
Avatar billede erikjacobsen Ekspert
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?
Avatar billede olebole Juniormester
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) );
Avatar billede shosho500 Nybegynder
28. oktober 2007 - 21:35 #9
olebole smid et svar
Avatar billede olebole Juniormester
29. oktober 2007 - 14:43 #10
Gerne  :)
Avatar billede olebole Juniormester
31. oktober 2007 - 14:16 #11
Tak for points  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester