URL Search Parameters
@Work1
Over
Waarom
Stel, je hebt een webwinkel met verschillende producten. Met wat jullie nu weten, moet je dan een pagina per product maken:
Waarom
Het zou gemakkelijker zijn moest je één pagina product.html kunnen maken en op een bepaalde manier kunnen meegeven over welk product het gaat
Dat kan!
De browser laat ons toe om bij elke url extra data mee te geven, ZONDER dat de pagina onvindbaar is, bv:
https://www.facebook.com/search/top/?q=michael
Doel
Synoniemen
Formaat
index.html?name=value
Voorbeeld
index.html?amount=10
→ amount (name) = 10 (value)
Verschillende
index.html?name1=value&name2=value
bv. index.html?amount=10&type=small
→ amount (name) = 10 (value)
→ type (name) = small (value)
Dubbele
index.html?name=value&name=value
bv. index.html?type=medium&type=small
→ type = ['medium', 'small']
Inlezen met JavaScript
Search Params inlezen
// Huidige URL is index.html?amount=10&size=medium
const query = window.location.search;
console.log(query);
// zal "?amount=10&size=medium" printen in consoleWaarom omzetten
URLSearchParams
// verdergaand op het vorige stuk code met ?amount=10&size=medium
const params = new URLSearchParams(query);
console.log(params.has('amount')); // true
console.log(params.has('size')); // true
console.log(params.has('ietsanders')); // false
console.log(params.get('amount')); // '10'
console.log(params.get('size')); // 'medium'
console.log(params.get('ietsanders')); // null
URLSearchParams
// bv. index.html?size=medium&size=large&amount=10
//
const params = new URLSearchParams(window.location.search);
console.log(params.getAll('size')); // ['medium', 'large'] (array)
console.log(params.getAll('amount')); // ['10'] (array)
console.log(params.get('amount')); // '10'
Zelf creëren met JavaScript
Standaard
const value = "medium";
// gebruiken in url -> zelf ? toevoegen!
const url = '/index.html?size=' + value;URLSearchParameters
// we starten met een leeg URLSearchParams object
const params = new URLSearchParams();
// voeg type toe
params.append('size', 'medium');
params.append('amount', '2');
// omzetten naar query string
const query = params.toString(); // type=medium&size=2
// gebruiken in url -> zelf ? toevoegen!
const url = '/index.html?' + query;Meer methodes