Få søkestrengverdier i JavaScript

I en URL gir spørringsstrengverdier ofte informasjon om forespørselen, som parametere for et søk eller ID-en til et objekt du bruker. Hvis noen av forretnings- eller forespørselslogikken håndteres i frontend, er det viktig å vite hvordan du henter søkestrengverdiene fra URL-en. Det er flere måter å oppnå dette på, noen av dem vil vi se her.

URLSearchParams

De URLSearchParams grensesnittet støttes av alle større nettleserversjoner unntatt IE 11. Det fungerer ved å analysere søkestrengen til en URL og gi en måte å få tilgang til verdiene på. For eksempel:

let params = new URLSearchParams('q=node&page=2');
params.get('q'); 
params.get('page'); 

En av ulempene med dette grensesnittet er at du må sende det bare søkestrengen til en URL. Hvis du jobber med gjeldende nettleser-URL, er det enkelt å gjøre siden du bare kan passere window.location.search. Hvis du arbeider med en annen URL, må du analysere og sende søkestrengen separat.

For å analysere spørringsparametrene til et objekt, bruk URL.searchParams's .entries() metode, som returnerer en Iterator av nøkkel/verdi-par, og Object.fromEntries for å konvertere det til et objekt.

let params = new URLSearchParams('q=node&page=2');
let entries = params.entries();
Object.fromEntries(entries); 

URL-objekt

De URL API støttes også av alle større nettleserversjoner unntatt IE 11. Det tilbyr en mer fleksibel måte å analysere URL-er på, og den gir også tilgang til søkestrengverdiene. For eksempel:

const url = new URL('https://stackabuse.com/search?q=node&page=2');
const searchParams = url.searchParams;

searchParams.get('q'); 
searchParams.get('page'); 

url.searchParams er samme type forekomstobjekt returnert av URLSearchParams.

De url objektet ovenfor har også alle deler av URL-en delt ut i sine deler. For eksempel:

url.href; 
url.origin; 
url.protocol; 
url.host; 
url.hostname; 
url.port; 
url.pathname; 
url.search; 
url.hash; 

Ren JavaScript

Hvis du av en eller annen grunn ikke får tilgang til API-ene ovenfor eller ønsker å ha mer kontroll over parsingen, kan du bruke følgende kode for å analysere spørringsstrengen til et objekt.

function getQueryParams(url) {
    const paramArr = url.slice(url.indexOf('?') + 1).split('&');
    const params = {};
    paramArr.map(param => {
        const [key, val] = param.split('=');
        params[key] = decodeURIComponent(val);
    })
    return params;
}

Merknader: Det er mange måter å analysere spørringsparametere på i vanlig JS, noen mer kompliserte (og robuste) enn andre. Dette er bare én vei, og ble tilpasset fra denne kjernen.

Vi kan deretter bruke denne enkle JS-funksjonen til å analysere en enkelt spørringsparam til en streng:

getQueryParams('https://stackabuse.com/search?q=node&page=2')

Tidstempel:

Mer fra Stackabuse