Hvordan kan jeg få værdier for forespørgselsstrenge i JavaScript?
Er der en plugin-fri måde at hente query string værdier via jQuery (eller uden)?
Hvis ja, hvordan? Hvis ikke, er der så et plugin, der kan gøre det?
2701
3
opdatering: september 2018
Du kan bruge URLSearchParams, som er enkel og har rimelig (men ikke fuldstændig) browserunderstøttelse.
Original
Du behøver ikke jQuery til det formål. Du kan bare bruge noget rent JavaScript:
Brug:
Bemærk: Hvis en parameter er til stede flere gange (
?foo=lorem&foo=ipsum
), vil du få den første værdi (lorem
). Der findes ingen standard for dette, og brugen varierer, se f.eks. dette spørgsmål: (https://stackoverflow.com/questions/1746507/authoritative-position-of-duplicate-http-get-query-keys).BEMÆRK: Funktionen er stregfølsom over for store og små bogstaver. Hvis du foretrækker et parameternavn, der ikke tager hensyn til store og små bogstaver, skal du tilføje 'i' modifikator til RegExp
Dette er en opdatering baseret på de nye URLSearchParams-specifikationer for at opnå det samme resultat på en mere kortfattet måde. Se svaret med titlen "URLSearchParams" nedenfor.
Roshambo på snipplr.com har et simpelt script til at opnå dette beskrevet i Get URL Parameters with jQuery | Improved. Med hans script får du også nemt mulighed for at trække netop de parametre ud, du ønsker.
Her'er essensen:
Derefter skal du bare hente dine parametre fra forespørgselsstrengen.
Så hvis URL/forespørgselsstrengen var
xyz.com/index.html?lang=de
.Så skal du bare kalde
var langval = $.urlParam('lang');
, og så har du det.UZBEKJON har også et godt blogindlæg om dette, Get URL parameters & values with jQuery.
Hvis du bruger jQuery, kan du bruge et bibliotek som f.eks. jQuery BBQ: Back Button & Query Library.
Edit: Tilføjelse af Deparam eksempel:
Hvis du bare vil bruge almindeligt JavaScript, kan du bruge...
På grund af den nye HTML History API og specielt
history.pushState()
oghistory.replaceState()
, kan URL'en ændres, hvilket vil ugyldiggøre cachen af parametre og deres værdier.Denne version vil opdatere sin interne cache af parametre, hver gang historikken ændres.