Ajax. 1. Wprowadzenie. 2. Aplikacja serwerowa

Podobne dokumenty
Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

Modele danych walidacja widoki zorientowane na model

Laboratorium 7 Blog: dodawanie i edycja wpisów

REFERAT O PRACY DYPLOMOWEJ

Sesje i logowanie. 1. Wprowadzenie

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Podstawy technologii WWW

Aplikacje Internetowe

Pomoc dla systemu WordPress

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Podstawy technologii WWW

Analizując żądania za pomocą narzędzi developerskich można odczytać listę preferowanych języków, jak na poniższym przykładzie.

Zaawansowane aplikacje internetowe

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

MATERIAŁY - udostępnianie materiałów dydaktycznych w sieci SGH

Podstawy technologii WWW

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Baza danych sql. 1. Wprowadzenie

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Instrukcja użytkowania platformy ONLINE. Akademii Doskonalenia Zawodowego NATUROPATA ADZ Naturopata

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Spis wzorców. Działania użytkownika Strona 147 Obsługa większości Działań użytkownika za pomocą kodu JavaScript przy użyciu metod obsługi zdarzeń.

Podstawy JavaScript ćwiczenia

AJAX. Wykonał: Marcin Ziółkowski, AGH Kraków, AiR rok 5.

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

Instrukcja generowania certyfikatu PFRON i podpisywania dokumentów aplikacji SODiR w technologii JS/PKCS 12

Wczytywanie cenników z poziomu programu Norma EXPERT Tworzenie własnych cenników w programie Norma EXPERT... 4

PHP: bloki kodu, tablice, obiekty i formularze

Programy LeftHand - Obsługa plików JPK. Luty 2017

Platforma e-learningowa

Wykład 5: PHP: praca z bazą danych MySQL

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

Pokaz slajdów na stronie internetowej

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania. Wykład 2. dr Artur Bartoszewski - WYKŁAD: Języki i Systemy Programowania,

Portal SRG BFG. Instrukcja korzystania z Portalu SRG BFG

Podręcznik użytkownika Wprowadzający aplikacji Wykaz2

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Tworzenie okna dialogowego w edytorze raportu SigmaNEST. część 1

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Aplikacje internetowe - laboratorium

Spis treści. Spis treści Wstęp Instalacja nazwa.pl Instalacja Home.pl Edycja grafiki strony logo...

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

:APOGEE PORTAL. skrócona instrukcja użytkownika. (Page Master)

Instrukcja instalacji programu STATISTICA

INSTRUKCJA UŻYTKOWNIKA SYSTEMU BIP

Laboratorium 1 Wprowadzenie do PHP

Katalog książek cz. 3: Web Service

Portal SRG BFG Instrukcja korzystania z Portalu SRG BFG

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji:

Tworzenie Stron Internetowych. odcinek 9

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

,Aplikacja Okazje SMS

SYSTEM ZARZĄDZANIA DANYMI OSOBOWYMI - INSTRUKCJA UŻYTKOWNIKA

Backend Administratora

Nr: 12. Tytuł: UDOSTĘPNIANIE DANYCH O SPRAWACH KLIENTOM KANCELARII NA ZEWNĘTRZNYCH SERWERACH WWW. Data modyfikacji:

Zanim zaczniesz. Warto ustawić kartę sieciową naszego serwera.

JQuery. $('#pierwszy').css('color','red').hide('slow').show(3000); $(document).ready(function() { //... tutaj nasze skrypty jquery //...

CMS- kontakty (mapa)

Kurs walut. Specyfikacja projektu. Marek Zając

Widżety KIWIPortal. tworzenie umieszczanie na stronach internetowych opcje zaawansowane. Autor: Damian Rebuś Data: Wersja: 1.

Programowanie obiektowe

Zajęcia 4 - Wprowadzenie do Javascript

OpenLaszlo. OpenLaszlo

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

DESlock+ szybki start

Dokumentacja końcowa projektu z ZPR

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Laboratorium 6 Tworzenie bloga w Zend Framework

Quiz Aplikacja internetowa

Rys.2.1. Drzewo modelu DOM [1]

Szkolenie z użytkowania platformy ONLINE.WSNS

Data wydania: Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Pomoc. BIP strona portalu

Programy LeftHand - Obsługa plików JPK. Wrzesień 2016

Aplikacje WWW - laboratorium

Nowy szablon stron pracowników ZUT

APD Instrukcja użytkownika

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Wypełnianie protokołów w USOSweb. Instrukcja dla osób prowadzących zajęcia dydaktyczne.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

2 Podstawy tworzenia stron internetowych

SAS Institute TECHNICAL SUPPORT )

edycja szablonu za pomocą programu NVU

GENERATOR OFERTY PDF DOKUMENTACJA UŻYTKOWA 1/20

PHP: bazy danych, SQL, AJAX i JSON

Repozytorium Cyfrowe BN

INTENSE PLATFORM Zmiany w wersji Wersja 7.2

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

Podręcznik użytkownika Publikujący aplikacji Wykaz2

Transkrypt:

Ajax 1. Wprowadzenie Do tej pory każda akcja na Waszej stronie kończyła się nowym requestem do serwera i przeładowaniem całej strony w przeglądarce. W tej instrukcji dodamy elementy asynchroniczne na stronie, czyli prościej mówiąc elementy, które są podmieniane w tle bez przeładowania strony. Sam Ajax w skrócie oznacza mniej więcej Asynchroniczny javascript i Xml. Oznacza to, iż musimy napisać odpowiedni skrypt, który będzie działał po stronie klienta i na odpowiednią akcję wykonywał w tle żądanie do servera. Natomiast serwer będzie zwracał treść w postaci xml, którą skrypt odpowiednio wkomponuje w stronę. 2. Aplikacja serwerowa W pierwszej kolejności najłatwiej będzie przerobić istniejący kod strony dopisując obsługę żądań ajax-owych. W ten sposób operacje na danych jak i logika aplikacji diametralnie się nie zmieni. Aby rozpoznać, czy żądanie jest ajaxowe trzeba zbadać, czy w nagłówku żądania znajduje się nagłówek XMLHttpRequest. Dodaje go przeglądarka za każdym razem jeśli wykonywane jest żądanie asynchroniczne. W MVC obecność nagłówka można sprawdzić metodą: Request.IsAjaxRequest() W przypadku ajaxowego żądania serwer zwróci uproszczony widok IndexPartial zawierający jedynie fragment strony. W innym wypadku metoda zadziała tak jak dotychczas, zwracając widok Index.

Zwrócicie uwagę, iż widok IndexPartial jest praktycznie kopią indeksu tylko ma odciętą deklarację layoutu. Dodano również każdemu z linków klasę Ajax-Action, w tej chwili jest to nieistotne i niewymagane, ale w trakcie pisania skryptu js okaże się bardzo przydatna. Dodatkowo całość widoku umieszczona została w pojedynczym obiekcie o klasie Ajax-Block, co również się wyjaśni później. Natomiast widok Indeks można przerobić wycinając fragment wspólny z IndexPartial, a w to miejsce wywołać renderowanie tegoż partiala. Dzięki temu dalej layout elementu jest zdefiniowany w jednym miejscu. To samo można zrobić z kontrolerem i formularzami edycji.

Redirect-a z metody edit do index zostawiamy bez zmian, gdyż ajax-owe żądania również podlegają przekierowaniu. Poza tym w metodzie indeks również dodano obsługę ajax więc serwer z pewnością zwróci stosowną treść. Widoki analogicznie można przerobić tak jak w przypadku indeksu. Zobaczcie, że w tym wypadku formularz ma również klasę Ajax-Action, natomiast obiekt okalający całość Ajax-Modal.

UWAGA! Szczególną uwagę zwróćcie, iż w tym momencie w formularzu wpisywany jest link. Jest to istotne w przypadku ajax-a, gdyż formularz z domyślnym adresem wysyłany jest pod aktualny adres. Przykładowo będąc na adresie /home/index wstawicie ajax-owo formularz z strony /home/edit to domyślnie przeglądarka będzie chciała go wysłać na /home/index, a nie na /home/edit. Oczywiście tworząc swój skrytp musicie sami podać adres, gdzie ma iść asynchroniczne żądanie. Możecie go odczytać z elementu linka lub formularza. W ten prosty sposób skończyliśmy część po stronie serwer. Zaletą takiego podejścia jest nieduży nakład pracy, jak również współdzielony kod dla obu funkcjonalności. 3. Skrypt JavaScript klienta Teraz należy utworzyć skrypt, który będzie uruchamiała przeglądarka. W pierwszej kolejności tworzymy plik skryptu w katalogu /Scripts/skrypt.js Następnie musimy dopisać odnośnik do naszego skryptu w głównym layoucie strony, tak aby przeglądarka pobierając cały wygenerowany kod html wiedziała, że ma również pobrać i uruchomić nasz skrypt. Dodatkowo dokładamy skrypty bootstrapa.

Dopisanie go za element <html> zamiast w <header> powoduje, iż skrypt zostanie pobrany i odpalony dopiero po wyrenderowaniu strony. Pozwala to uniknąć długiego wczytywania strony w przypadku rozległych skryptów. Czasem warto umieszczać w ten sposób biblioteki, gdyż mogą w dużym stopniu zniechęcić do korzystania z strony. Skrypt taki może odpalić się w tle jak użytkownik już przegląda zawartość strony. Natomiast w treść wpleść skrypty, które mają wpływ na wygląd strony i nie mogą być uruchamiane na koniec, gdyż użytkownik zobaczy wadliwą przeskakującą stronę. Możemy teraz sprawdzić, czy nasz skrypt się uruchamia poprawnie. Można wpisać w nim linijkę: console.log( jaki? tekst ); Wypisze on nam na konsoli jakiś tekst widoczny w narzędziach developerskich przeglądarki. Dalej skorzystamy z biblioteki jquery. W pierwszej kolejności skojarzymy zdarzenie kliknięcia oraz submit-a z naszymi metodami handlerami. Zwracając false z metody blokujemy dalszą propagację zdarzenia, które ostatecznie skutkuje synchronicznym przeładowaniem strony.

Odwołując się do this w metodzie odwołujemy się do elementu, który wyemitował zdarzenie. Dzięki temu można odczytać wszystkie potrzebne dla nas informacje. Dzięki tym informacjom możemy sami w skrypcie wywołać żądanie oraz podmienić treść. Korzystamy z gotowej metody jquery.ajax, gdzie pod parametrem context przekazujemy referencję, którą w metodzie success chcemy mieć pod zmienną this, w naszym przypadku będzie to kliknięty buton. Do urla przekazujemy wartość atrybutu href klikniętego butona. W metodzie success uruchamianej w przypadku odebrania zwrotki z serwera, wyszukujemy najbliższy element klasy Ajax-Block, o którym wspominaliśmy przy tworzeniu widoków i podmieniamy jego treść. Jest to przykład uniwersalnej metody, która pozwala podmieniać dowolne obiekty w zależności od parametrów. Podejście takie również pozwala na wyłączenie skryptów, gdyż strona w takiej sytuacji będzie działać w sposób synchroniczny bez większych problemów.

Ostatnim przykładem jest wykorzystanie okienka dialogowego bootstrapa. Do wyświetlania elementów o klasach Ajax-Modal. Dodatkowo dodano metodę odsługującą formularze. Każdy odebrany fragment strony jest umieszczony w wygenerowanej na początku strukturze modala, a następnie wyświetlone. Dodatkowo w modalu przechowywany jest kontekst do ostatniego elementu, który wywołał się wewnątrz bloku Ajax-Block, dzięki temu możliwa jest podmiana bloku, który nie okala niezależnego modala (umieszczane są w innym miejscu przez skrypt bootstrap-a), chociaż jedna z kontrolek tego bloku wywołała okienko (referencja do macierzystego bloku, z którego okienko zostało wykonane).

Zadanie Rozszerzyć aplikację z poprzednich zajęć i dodać obsługę zapytań ajax-owych. Zbadać aplikację narzędziami deweloperskimi przeglądarki, jak przepływają komunikaty pomiędzy serwerem, a Waszym skryptem. Zbadać jakim niepożądanym efektem cechuje się ajax-owy formularz logowania. Zastanowić się kiedy warto stosować ajax-a i zbadać jaki efekt przynosi funkcja cofania przeglądarki i co można w tym kierunku zrobić.