URL-osoitteessa kyselymerkkijonoarvot tarjoavat usein tietoja pyynnöstä, kuten haun parametrit tai käyttämäsi objektin tunnus. Jos jotakin liiketoiminta- tai pyyntölogiikkaa käsitellään käyttöliittymässä, on tärkeää tietää, kuinka kyselymerkkijonoarvot noudetaan URL-osoitteesta. On olemassa useita tapoja saavuttaa tämä, ja muutamia niistä tarkastellaan tässä.
URLSearchParams
- URLSearchParams
käyttöliittymää tukevat kaikki yleisimmät selainversiot paitsi IE 11. Se toimii jäsentämällä URL-osoitteen kyselymerkkijonoa ja tarjoamalla tavan käyttää arvoja. Esimerkiksi:
let params = new URLSearchParams('q=node&page=2');
params.get('q');
params.get('page');
Yksi tämän käyttöliittymän huonoista puolista on, että sinun on välitettävä sille vain URL-osoitteen kyselymerkkijono. Jos käytät nykyistä selaimen URL-osoitetta, se on helppo tehdä, koska voit vain ohittaa window.location.search
. Jos työskentelet jonkin muun URL-osoitteen kanssa, sinun on jäsennettävä ja välitettävä kyselymerkkijono erikseen.
Jos haluat jäsentää kyselyparametrit objektiksi, käytä URL.searchParams
n .entries()
menetelmä, joka palauttaa an Iterator
avain/arvo-pareista ja Object.fromEntries
muuntaaksesi sen esineeksi.
let params = new URLSearchParams('q=node&page=2');
let entries = params.entries();
Object.fromEntries(entries);
URL-objekti
- URL
API:ta tukevat myös kaikki yleisimmät selainversiot paitsi IE 11. Se tarjoaa joustavamman tavan jäsentää URL-osoitteita, ja se tarjoaa myös tavan päästä käsiksi kyselyn merkkijonoarvoihin. Esimerkiksi:
const url = new URL('https://stackabuse.com/search?q=node&page=2');
const searchParams = url.searchParams;
searchParams.get('q');
searchParams.get('page');
url.searchParams
on samantyyppinen ilmentymäobjekti, jonka palauttaa URLSearchParams
.
- url
Yllä olevassa objektissa on myös kaikki URL-osoitteen osat jaettu osiin. Esimerkiksi:
url.href;
url.origin;
url.protocol;
url.host;
url.hostname;
url.port;
url.pathname;
url.search;
url.hash;
Puhdas JavaScript
Jos et jostain syystä pääse käsiksi yllä oleviin sovellusliittymiin tai haluat hallita jäsentämistä paremmin, voit käyttää seuraavaa koodia jäsentääksesi kyselymerkkijonon objektiksi.
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;
}
Huomautuksia: On monia tapoja jäsentää kyselyparametreja tavallisessa JS:ssä, jotkut monimutkaisempia (ja vankempia) kuin toiset. Tämä on vain yksi tapa, ja se on mukautettu tämä ydin.
Voimme sitten käyttää tätä tavallista JS-funktiota jäsentämään yksittäisen kyselyparametrin merkkijonoksi:
getQueryParams('https://stackabuse.com/search?q=node&page=2')