JavaScript: práce s GETem jako v PHP

 |  HTML, CSS, JavaScript  |  3 350x
JavaScript: práce s GETem jako v PHP

Tak, jako v PHP pracujeme s parametry oddělenými otazníkem a následně ampersandem (&), můžeme v JavaScriptu pracovat s kotvami. Nejčastější využití takzvané kotvy spočívá v odkazu na nadpis či odstavec dále v textu nebo přímý odkaz na aktivní záložku. Pomocí hodnoty kotvy ale můžeme v kódu podmiňovat naprosto cokoli. Tak, jako query string ?arg=value&page=3 splní svůj účel, může pracovat i kotva ve tvaru #arg=value&page=neco. PHP takový řetězec v URL už rozpoznat nedokáže, kdežto JavaScript si z něj umí vzít potřebné hodnoty.

Proměnná, kterou hledáme se skrývá v parametru hash objektu window.location. Ten obsahuje úplnou url včetně kotvy. Rozparsování je naprosto triviální, a tak můžeme začít s kotvou pracovat jako s plnohodnotnými proměnnými.

/**
 * vytahne a rozparsuje kotvu z url
 * @return array 
 **/
function get_hash() {
	hash = document.location.hash.replace(new RegExp('^(.*)#'), '');
	get = {}
	if (hash) {
		hash = hash.split('&');
		for (i = 0; i < hash.length; i++) {
			hash[i] = (hash[i]).split('=');
			get[hash[i][0]] = (hash[i][1] ? hash[i][1] : null);
		}
	}
	return get;
}

_get = get_hash();

Použití

Po rozparsování následujícího příkladu dostaneme pole ve tvaru:

// http://www.treba.cz/#arg=value&none&page=2

_get = {
	arg : value,
	none : null,
	page : 2
};

if (_get.arg == 'neco') {
// ...
}

Proměnné bez definované hodnoty bude přiřazena automaticky hodnota null.

Tip

Sám používám tento způsob například pro cílení skrytých záložek. Navigace vede právě na kotvy, ale jelikož DOM neobsahuje žádný HTML element s takto podivným ID, stránka neposkočí. Hodnotu kotvy lze totiž v url libovolně měnit bez refreshe. Pak podle hodnoty proměnné, například #tab=main přidám aktivní třídu odkazu, který vede na #main, zobrazím div#main a všechny ostatní divy definované jako záložky skryji.

Facebook Twitter Google+

Komentáře k článku "JavaScript: práce s GETem jako v PHP"

Gravatar
Slávek 21. 2 2011, 00:04
1/2 Pondělí 21. Února 2011, 00:04  |  Firefox, Windows XP

Pěkný články, ikdyž v tom plavu jak pulec na souši (ještě nejsem zkušená ryba). Co je pravdy na tom, že používání js by se mělo omezit na co nejmíň jelikož, když si ho uživatel vypne, tak to může bejt i tragický následky (přehánim :D)

Gravatar
Mike 21. 2 2011, 11:35
2/2 Pondělí 21. Února 2011, 11:35  |  Opera, Windows Vista

@: Pravdy na tom je dost, ale myslím, že v dnešní době už to nemá moc smysl.

Použití:
a) pouze na efekty, bez kterých web může bez problému fungovat
b) pokud web bez JS nepojede, je dobré tam dát hlášku něco jako "máte vyplý JavasSript, zapněte si ho".

Každopádně pokud si uživatel vypne JS, většinou ví co dělá, takže i ví, že si ho občas musí zapnout.

Přidat komentář







Nevím, kolik to je
Parak simati, Muballit mitte, Nergal allatu mellamu mesaru, La tapallah Annuaki, Kettu Puluthu qillatua