Zmodyfikować pasek adresu URL w aplikacji AJAX w celu dostosowania obecnego stanu




Piszę aplikację AJAX, ale gdy użytkownik porusza się po aplikacji, chciałbym adres URL w pasku adresu, aby zaktualizować pomimo braku przeładowywanie stron. Zasadniczo chciałbym dla nich, aby móc zakładkę w dowolnym momencie, a tym samym powrót do aktualnego stanu.


Jak to ludzie obchodzenia utrzymanie Oferują robione w aplikacji AJAX?
Sposobem na to jest manipulować `location.hash`, gdy aktualizacje AJAX doprowadzić do zmiany stanu, który chcesz mieć dyskretną URL. Na przykład, jeżeli adresu URL strony jest:



> 
> <http://example.com/>
> 
> 
> 


Jeśli funkcja stronie klienta wykonywane ten kod:



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

location.hash = 'foo';

```

Następnie URL wyświetlany w przeglądarce zostanie zaktualizowana:



> 
> <http://example.com/#foo>
> 
> 
> 


Pozwala to użytkownikom na zakładkę na „foo” stan strony i skorzystać z historii przeglądarki, aby poruszać się pomiędzy państwami.


Z tego mechanizmu w miejscu, będziesz wtedy trzeba analizować na część skrótu adresu URL po stronie klienta przy użyciu JavaScript, aby utworzyć i wyświetlić odpowiedni stan początkowy, jako identyfikatory fragment (część po #) nie są wysyłane do serwer.


[Wtyczka hashchange Ben Alman użytkownika](http://benalman.com/projects/jquery-hashchange-plugin/) sprawia, że ten ostatni wiatr jeśli używasz jQuery.
<p>co z użyciem metatagu, który google sugeruje tym, którzy nie chcą haszować w swoich adresach url: <code>&lt;meta name="fragment" content="!"&gt;</code></p><p>więcej informacji można znaleźć tutaj: <a href="https://developers.google.com/webmasters/ajax-crawling/docs/getting-started">https://developers.google.com/webmasters/ajax-crawling/docs/getting-started</a> </p><p>niestety nie sądzę, aby nickc wyjaśnił problem, który według mnie miał op. problem polega po prostu na tym, że nie wiemy, komu służymy treściom, jeśli nie użyjemy hash-bang. pushstate nie rozwiązuje tego dla nas. nie chcemy, aby wyszukiwarki informowały użytkowników końcowych, aby przechodzili do jakiegoś adresu url, który wypluwa niesformatowany json. zamiast tego tworzymy adresy url (które wywołują inne połączenia do większej liczby adresów url), które pobierają dane za pośrednictwem ajax i prezentują je użytkownikowi w sposób, który preferujemy. jeśli użytkownik nie jest człowiekiem, alternatywnie możemy udostępnić obraz html-snapshot, aby wyszukiwarki mogły odpowiednio skierować użytkowników ludzkich na adres url, pod którym oczekiwaliby znaleźć żądane dane (i w sposób reprezentacyjny). ale największym wyzwaniem jest to, w jaki sposób określamy typ użytkownika? tak, możemy użyć .htaccess lub coś, aby przepisać url dla wykrytych przez nas botów wyszukiwarek, ale nie jestem pewien, czy jest to w pełni odporne i przyszłościowe. możliwe też, że google może ukarać ludzi za robienie tego rodzaju rzeczy, ale nie zbadałem ich w pełni. kombi (metatag pushstate + google) wydaje się być prawdopodobnym rozwiązaniem.</p> jak nie trzymasz w niej haseł/zakładek to sprawdź cofnięcie się do wersji fabrycznej przeglądarki lub opcję czyszczenia całej pamięci aplikacji.

wtedy powinna odpuścić aż się nie zaktualizuje do uszkodzonej wersji.

jak musisz zachować tamte dane, to próbuj opcji „wymuś zatrzymanie” (bardzo opcjona… Obie alternatywy, które zostały wskazane ma wady i zalety, decyzja zależy od tego jak to plusy i minusy wpływa na aplikację:



> 
> Pobrać wszystkie wartości z bazy danych przy użyciu zwykłego PHP następnie przechowywać je w zmiennej JavaScript, później szukać sekund rozwijanej listy (jeśli wartość pierwszej rozwijanej liście na zmiany wartości) w zmiennej JavaScript (array).
> 
> 
> 


Plusy:


* Minimalizuje petycje http, trzeba tylko jedną prośbę, aby odzyskać całość danych.
* Minimalizuje kwerenda jest potrzebne w bazie danych, na ogół tylko wykonać jedno zapytanie.


Cons:


* Zwiększa ilość pamięci używanej jeśli masz duże ilości danych.
* Jeśli dane zmienia się nieustannie, użytkownicy nie widzą zmian aż odświeżyć całą stronę.



> 
> Jeśli pierwszy rozwijanej liście zmian wartości jest następnie pobrać wartości dla drugiej listy rozwijanej z bazą danych za pomocą technologii AJAX (jQuery).
> 
> 
> 


Plusy:


* Nie trzeba do przechowywania wszystkich danych w pamięci całych jedynie dane, które zostaną wykorzystane, co zmniejsza ilość potrzebnej pamięci.
* Twoje dane są aktualizowane za każdym razem, bez konieczności przeładowania strony tylko zmieniając wybór.


Cons:


* Trzeba wykonać kilka petycji HTTP i biegnie querys z bazą danych przy każdej zmianie wyboru.


Osobiście preferuję metodę 2, jeśli ilość danych jest stosunkowo duża i wydajność nie jest koniecznością. Próbowałaś aktualizować apliakcję? jak potrzebujesz adres url to wejdź na stronę np. tinypic dodaj zdj. z kompa i później je włącz, ewentualnie kliknij prawym przyciskiem myszy na zdj. i kliknij (mozilla firefox-pokaż obrazek, chrome-pokaż grafikę, zależy jaka przeglądarka) i skopiuj link ;) I [googled](https://www.google.com/search?q=ajax%20drag%20and%20drop%20file) „Ajax przeciągnij i upuść plik”, a pierwszy wynik jest [ten](http://valums.com/ajax-upload/) .


Krótka odpowiedź: tak, to jest bardzo możliwe. należy wziąć pod uwagę jednak, że przeciągnij i upuść nie działa idealnie na każdej przeglądarki / środowisku, dlatego należy nadal trzymać przycisk alternatywny tak na wszelki wypadek. Zmiana przeglądarki? witaj, pod tym adresem <https://www.google.com/webmasters/tools/mobile-friendly/> to jest jakiś błąd na "zapytaj" (błąd 404) i może to wreszcie naprawią.  
teraz aby odtworzyć link na komórce, w trybie mobilnym, to trzeba ten link podać bez http i www, aby inni mogli to skopiować i wkleić do paska adresu.  
możesz zrobić poradnik, ale większość nie czyta poradników niestety, ale jeśli go zareklamujesz i będziesz do niego odsyłał osoby skonsternowane, to może być popularny. Cześć,
  

  
Aktualizowałaś aplikację?