Pobierz wartości ciągu zapytania w JavaScript

W adresie URL wartości ciągu zapytania często zawierają informacje o żądaniu, takie jak parametry wyszukiwania lub identyfikator używanego obiektu. Jeśli jakakolwiek logika biznesowa lub logika żądań jest obsługiwana w interfejsie użytkownika, ważne jest, aby wiedzieć, jak pobrać wartości ciągu zapytania z adresu URL. Istnieje wiele sposobów na osiągnięcie tego celu, z których kilka zobaczymy tutaj.

Parametry wyszukiwania URL

Połączenia URLSearchParams Interfejs jest obsługiwany przez wszystkie główne wersje przeglądarek z wyjątkiem IE 11. Działa poprzez parsowanie ciągu zapytania adresu URL i zapewnienie sposobu na dostęp do wartości. Na przykład:

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

Jedną z wad tego interfejsu jest to, że musisz przekazać mu tylko ciąg zapytania adresu URL. Jeśli pracujesz z bieżącym adresem URL przeglądarki, jest to łatwe, ponieważ możesz po prostu przekazać window.location.search. Jeśli pracujesz z dowolnym innym adresem URL, musisz przeanalizować i przekazać ciąg zapytania osobno.

Aby przeanalizować parametry zapytania do obiektu, użyj URL.searchParams„s .entries() metoda, która zwraca an Iterator par klucz/wartość oraz Object.fromEntries przekształcić go w obiekt.

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

Obiekt URL

Połączenia URL Interfejs API jest również obsługiwany przez wszystkie główne wersje przeglądarek z wyjątkiem IE 11. Oferuje bardziej elastyczny sposób analizowania adresów URL, a także zapewnia dostęp do wartości ciągu zapytania. Na przykład:

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

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

url.searchParams jest tym samym typem obiektu instancji zwróconego przez URLSearchParams.

Połączenia url Powyższy obiekt ma również wszystkie części adresu URL podzielone na części. Na przykład:

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

Czysty JavaScript

Jeśli z jakiegoś powodu nie możesz uzyskać dostępu do powyższych interfejsów API lub chcesz mieć większą kontrolę nad analizowaniem, możesz użyć poniższego kodu, aby przeanalizować ciąg zapytania do obiektu.

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;
}

Note: Istnieje wiele sposobów parsowania parametrów zapytania w zwykłym JS, niektóre bardziej skomplikowane (i niezawodne) niż inne. To tylko jeden sposób i został zaadaptowany z ten sedno.

Następnie możemy użyć tej prostej funkcji JS, aby przetworzyć pojedynczy parametr zapytania w łańcuch:

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

Znak czasu:

Więcej z Nadużycie stosu