Hur kan jag få fram värden för frågetecken i JavaScript?
Finns det ett pluginfritt sätt att hämta query string värden via jQuery (eller utan)?
Om så är fallet, hur? Om inte, finns det ett plugin som kan göra det?
2701
3
Uppdatering: september 2018
Du kan använda URLSearchParams som är enkel och har hyfsat (men inte fullständigt) webbläsarstöd.
Original
Du behöver inte jQuery för detta ändamål. Du kan använda ren JavaScript:
Användning:
Observera: Om en parameter förekommer flera gånger (
?foo=lorem&foo=ipsum
) får du det första värdet (lorem
). Det finns ingen standard för detta och användningsområdena varierar, se till exempel denna fråga: [Auktoritativ position för duplicerade HTTP GET-förfrågningsnycklar] (https://stackoverflow.com/questions/1746507/authoritative-position-of-duplicate-http-get-query-keys).OBS: Funktionen är skiftlägeskänslig. Om du föredrar parameternamn som inte tar hänsyn till stor- och små bokstäver, lägg till 'i' modifiering till RegExp.
Detta är en uppdatering som bygger på den nya URLSearchParams specs för att uppnå samma resultat på ett mer kortfattat sätt. Se svaret "URLSearchParams" nedan.
Roshambo på snipplr.com har ett enkelt skript som beskriver detta i Get URL Parameters with jQuery | Improved. Med hans skript kan du också enkelt få fram bara de parametrar du vill ha.
Här är huvuddragen:
Hämta sedan bara parametrarna från frågetecken.
Om URL/frågesträngen var
xyz.com/index.html?lang=de
.Kalla bara
var langval = $.urlParam('lang');
, så har du det.UZBEKJON har ett bra blogginlägg om detta också, Get URL parameters & values with jQuery.
Om du använder jQuery kan du använda ett bibliotek, till exempel jQuery BBQ: Back Button & Query Library.
Redigera: Lägg till Deparam-exempel:
Det är en bra idé att göra en ny version av Parparam;
Om du vill använda vanlig JavaScript kan du använda...
På grund av det nya HTML History API och särskilt
history.pushState()
ochhistory.replaceState()
kan URL:n ändras, vilket gör att cacheminnet med parametrar och deras värden blir ogiltigt.Den här versionen uppdaterar sitt interna cacheminne av parametrar varje gång historiken ändras.