Jak java script pobiera dane do np. wykreowania listy menu albo do odświeżenia strony (ajax)? czy sam komunikuje sie z bazą danych na serwerze czy tylko przez php?
To powinno Ci rozjaśnić podstawowy mechanizm działania AJAX: http://www.w3schools.com/ajax/ajax.gif
- Czyli z tego co widzę Java script wykonuje sie po stronie użytkownika (przeglądarka) a nie po stronie serwera jak PHP?
- Ale jeżeli strona wykorzystuje php to w przypadku Ajaxa java script musi wywołać stronę php która np. pobierze dane z bazy, wykreuje kod html i przekaże to dopiero skryptowi ajaxa, tak? czyli php tu pośredniczy?
- a w przypadku tworzenia takiego obiektu jak jakieś menu. Czy java script może samodzielnie (bez php) pobrać z bazy listę punktów tego menu?
AJAX to asynchroniczne wykonywanie się kodu JavaScript. W dużej mierze jest ono używane do tego, by pobrać dane z serwera. Jakiego? To już inna sprawa. Cały Ajax można podzielić na parę części:
-
zapytania do serwerów - tutaj mamy aktualnie 2 rodzaje zapytań
-
XMLHttpRequest
z trochę nieszczęśliwą nazwą, bo XMLa mało kto już zwraca, który to pozwala na wysłanie zapytania do serwera tylko w same-origin policy (są plany by to zmienić, ale to teraz nieważne) - JSONP - jest to obejście SOP w taki sposób, że wywołujemy zapytanie do serwera zewnętrznego chcąc pobrać skrypt (dodajemy nowy tag
<script>
), który wywołuje funkcję przekazując do niej obiekt JSa.
-
-
Eventy na stronie, które masz wylistowane na stronie MDN https://developer.mozilla.org/en-US/docs/Web/Reference/Events
-
WebSockets, WebWorkers, etc., ale to już bardziej skomplikowane
Czy musi być na serwerze PHP? Nie. Może być dowolna inna technologia zwracająca dane w formacie, które będziesz mógł przetworzyć w JSie.
Czy może być to DB? Tak, ale raczej niewiele z nich na coś takiego pozwala. Raczej będą to jakieś NoSQL jak CouchDB, MongoDB czy Cassandra.
Chodzi mi o jak najbardziej popularne rozwiązanie. Robię stronkę w php + mysql. Java Script znam bardzo pobierzenie tylko z prostych funkcji. Projekt który robię wymagałby użyci w paru miejscach js (między innymi menu i ładowanie ajaxem). Chciałbym zlecić napisanie kilku skryptów na szybko komuś z zewnątrz (pilny termin) i teraz nie wiem czy to co otrzymam powinno się spiąć z php czy też będą to zupełnie niezależne wtyczki które umieszczę w kodzie strony. Taki jest temat.
Ze strony PHP będziesz musiał zwracać treść w jakiejś formie. Nie polecam zwracania czystego HTMLa, lepiej zwrócić jakiś JSON i z niego wydłubać dane. Jednak jeśli chcesz tylko podmieniać treść strony przy użyciu AJAXa (bez migania) to znacznie łatwiej będzie użyć Turbolinks. Nie musisz wtedy wprowadzać żadnych zmian w kod. Jedyne co robisz to dodajesz ten skrypt.
Jeśli chodzi o ajaxa to właśnie chodzi mi tylko o podmianę treści bez odświeżania całej strony.
To tu masz do tego gotowy kod https://github.com/rails/turbolinks. Link do samego skryptu https://github.com/rails/turbolinks/blob/master/lib/assets/javascripts/turbolinks.js.coffee. Możesz też użyć PJAX: http://pjax.heroku.com/ (ale on już polega na jQuery).
Tak czytam o tym Turbolinks. To jekiś skrypt z Ruby on Rails? Nie wysypuje sie to na przeglądarkach? Zależy mi na tym żeby strona chodziła również na starym IE8.
Może to JQuery jet lepsze.
Ani jedno ani drugie nie zadziała na IE mniejszych niż 10 ze względu na to, że nie obsługują document.pushState
. Więc jedyne co Ci pozostaje to poszukać rozwiązania z hashbangiem.
No to jest właśnie problem. Jak coś jest fajnego to zawsze ma wymagania. A ta pierwsza wersja ajax z obiektem JSON pójdzie na IE8?
Mam pewne podstawy z programowania w Java. Oczywiście nie jest to Java Script ale może jakoś to przyswoję : ).