Úpravě adresového řádku URL AJAX App, aby odpovídaly současným stavem

hlasů
160

Píšu aplikaci AJAX, ale jak se uživatel pohybuje pomocí aplikace, rád bych URL v adresním řádku aktualizovat přes nedostatek opětovné načtení stránky. V podstatě bych chtěl k tomu, aby bylo možné na záložku v kterémkoliv místě a tím se vrátit k aktuálnímu stavu.

Jak se manipulace zachování restfulness v AJAX aplikacích lidé?

Položena 04/08/2008 v 18:53
zdroj uživatelem
V jiných jazycích...                            


8 odpovědí

hlasů
116

Způsob, jak to udělat, je manipulace location.hashpři aktualizace AJAX mít za následek změnu stavu, který byste chtěli mít diskrétní URL. Například, pokud url vaší stránky je:

http://example.com/

Je-li funkce na straně klienta spuštěn tento kód:

// AJAX code to display the "foo" state goes here.

location.hash = 'foo';

Potom se adresa URL zobrazí v prohlížeči by být změněna na:

http://example.com/#foo

To umožňuje uživatelům vytvořit záložku „foo“ stav stránky a pomocí historie prohlížeče pro navigaci mezi jednotlivými státy.

Díky tomuto mechanismu v místě, budete pak muset vyřadil hash část adresy URL na straně klienta pomocí JavaScriptu k vytvoření a zobrazení odpovídající počáteční stav, jako identifikátory fragment (část po #) nejsou odesílány do serverů.

Ben Alman je hashchange plugin dělá tento vítr, pokud používáte jQuery.

Odpovězeno 04/08/2008 v 19:04
zdroj uživatelem

hlasů
18

Podívejte se na místech, jako book.cakephp.org. Tento web změní adresu bez použití hash a používat AJAX. Nejsem si jistý, jak to dělá přesně to, ale já jsem se snažil přijít na to. Jestli někdo ví, dejte mi vědět.

Také github.com při pohledu na navigaci v rámci určitého projektu.

Odpovězeno 13/02/2011 v 20:47
zdroj uživatelem

hlasů
17

Je nepravděpodobné, že autor chce znovu nebo při použití Ajax přesměrování svého návštěvníka. Ale proč ne použít HTML5 je pushState/ replaceState?

Budete mít možnost upravit adresního, stejně jako se vám líbí. Získat přirozeně vypadající adresy URL, pomocí technologie AJAX.

Podívejte se na kód na svém posledním projektu: http://iesus.se/

Odpovězeno 27/04/2011 v 09:09
zdroj uživatelem

hlasů
12

To je podobné tomu, co řekl Kevin. Můžete mít svůj klientský stát jako nějaký javascript objektu, a když chcete uložit stav, serializovat objekt (pomocí JSON a kódování base64). Potom můžete nastavit fragment překlad do tohoto řetězce.

var encodedState = base64(json(state));
var newLocation = oldLocationWithoutFragment + "#" + encodedState;

document.location = newLocation; // adds new entry in browser history
document.location.replace(newLocation); // replaces current entry in browser history

První způsob, jak se bude zacházet nový stav jako nové místo (takže zadní tlačítka vezme je do předchozího umístění). Ten není.

Odpovězeno 04/08/2008 v 19:02
zdroj uživatelem

hlasů
3

Pokud OP nebo jiní jsou stále hledají způsob, jak dělat upravit historii prohlížeče k tomu, aby stát, s použitím pushState a replaceState, jak navrhl Ježíš, je ‚správná‘ způsob, jak to udělat teď. To je hlavní výhoda oproti location.hash se zdá být, že vytváří skutečné URL, a to nejen hash. Je-li uložen historie prohlížeče pomocí hash, a pak vrátil s JavaScript se zdravotním postižením, bude aplikace nebude fungovat, protože hash nejsou odeslány na server. Nicméně, pokud byl použit pushState, celá trasa bude odeslána na server, který pak můžete postavit na vhodně reagovat na trasách. Viděl jsem příklad, kdy byly použity stejné šablony knír na serveru i na straně klienta. Pokud by klient zapnutý javascript, by dostal pohotový reakce vynecháním zpáteční k serveru, ale aplikace bude fungovat naprosto v pořádku, bez javascriptu. To znamená, že aplikace může elegantně degradovat v nepřítomnosti JavaScriptu.

Také se domnívám, že je nějaký rámec tam venku, s názvem jako history.js. U prohlížečů, které podporují HTML5, používá pushState, ale v případě, že prohlížeč nepodporuje to, že to automaticky padá zpět k používání hashe.

Odpovězeno 23/06/2011 v 10:20
zdroj uživatelem

hlasů
3

Window.location.hash metoda je preferovaný způsob, jak věci dělat. Pro vysvětlení, jak to udělat, Ajax Patterns - unikátní URL .

YUI má provádění tohoto vzoru jako modul, jehož součástí je IE specifické pracovní arounds pro získání zpět tlačítko pracuje spolu s re-psaní adresy pomocí hash. YUI Browser manažer History .

Další rámce mají podobné implementace stejně. Důležitým bodem je, pokud chcete, aby se historie pracovat spolu s re-psaní adresy, různé prohlížeče potřebují různé způsoby, jak manipulaci s ním. (Tato možnost je podrobně popsána v prvním odkazu článku.)

IE potřebuje založený hack iframe, kde Firefox bude produkovat dvojí historii pomocí stejné metody.

Odpovězeno 31/03/2009 v 06:54
zdroj uživatelem

hlasů
3

SWFAddress pracuje v Flash a Javascript projektů a umožňuje vytvářet bookmarkable URL (metodou hash viz výše), stejně jako dává vám podporu back-tlačítko.

http://www.asual.com/swfaddress/

Odpovězeno 01/09/2008 v 14:43
zdroj uživatelem

hlasů
2

Zkontrolujte, zda uživatel je ‚in‘ stránky, když kliknete na adresním řádku, javascript říká, že jste mimo stránku. Změníte-li tyč URL a stiskněte tlačítko ‚Enter‘ symbolem ‚#‘, v něm pak jdete do stránky opět bez kliknutí na stránku manuálně pomocí kurzoru myši, pak příkaz keyboad událost (document.onkeypress) z JavaScriptu bude bylo možné zjistit, zda je to vstoupit a aktivní javascript pro přesměrování. Můžete zkontrolovat, zda je uživatel na stránce s window.onfocus a zkontrolujte, jestli je venku s window.onblur.

Jo, je to možné.

;)

Odpovězeno 14/10/2010 v 00:18
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more