Samouczek JS

JS DOM Wprowadzenie do JS JS Dokąd Wyjście JS Oświadczenia JS Składnia JS Komentarze JS Zmienne JS JS Let JS Const Operatorzy JS Arytmetyka JS Zadanie JS Typy danych JS Funkcje JS Obiekty JS Wydarzenia JS JS Strings Metody ciągów JS Wyszukiwanie ciągów JS Szablony JS String Numery JS Metody liczbowe JS Tablice JS Metody macierzowe JS Sortowanie tablic JS Iteracja tablicy JS JS Array Const JS Daty Formaty daty JS JS Data Pobierz metody Metody ustawiania daty JS Matematyka JS JS losowo JS Booleans Porównania JS Warunki JS Przełącznik JS Pętla JS dla Pętla JS dla In Pętla JS dla Of Pętla JS, podczas gdy Przerwa JS Iterable JS Zestawy JS Mapy JS Typ JS Konwersja typu JS JS Bitwise JS RegExp Błędy JS Zakres JS JS Podnoszenie Tryb ścisły JS JS to słowo kluczowe Funkcja strzałki JS Klasy JS JS JSON Debugowanie JS Przewodnik po stylu JS Najlepsze praktyki JS Błędy JS Wydajność JS JS słowa zastrzeżone

Wersje JS

Wersje JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Krawędź Historia JS

Obiekty JS

Definicje obiektów Właściwości obiektu Metody obiektowe Wyświetlanie obiektów Akcesoria do obiektów Konstruktorzy obiektów Prototypy obiektów Iterowalne obiekty Zestawy obiektów Mapy obiektów Odniesienie do obiektu

Funkcje JS

Definicje funkcji Parametry funkcji Wywołanie funkcji Wywołanie funkcji Funkcja Zastosuj Zamknięcia funkcji

Klasy JS

Wprowadzenie do zajęć Dziedziczenie klas Klasa statyczna

JS Async

Oddzwaniania JS Asynchroniczny JS JS Obietnice JS Async/Oczekiwanie

JS HTML DOM

Wprowadzenie do DOM Metody DOM Dokument DOM Elementy DOM DOM HTML Formularze DOM DOM CSS Animacje DOM Wydarzenia DOM Odbiornik zdarzeń DOM Nawigacja DOM Węzły DOM Kolekcje DOM Listy węzłów DOM

Zestawienie komponentów przeglądarki JS

Okno JS Ekran JS Lokalizacja JS Historia JS JS Navigator Wyskakujący alert JS Czas JS Pliki cookie JS

JS Web API

Wprowadzenie do internetowego interfejsu API Interfejs API formularzy internetowych Interfejs API historii online API przechowywania danych w sieci Web Web Worker API Internetowy interfejs API pobierania Internetowy interfejs API geolokalizacji

JS AJAX

Wprowadzenie do AJAX AJAX XMLHttp Żądanie AJAX Odpowiedź AJAX Plik XML AJAX AJAX PHP ASP AJAX Baza danych AJAX Aplikacje AJAX Przykłady AJAX

JS JSON

Wprowadzenie do JSON Składnia JSON JSON a XML Typy danych JSON Analiza JSON JSON Obiekty JSON Tablice JSON Serwer JSON JSON PHP JSON HTML JSON JSONP

JS kontra jQuery

Selektory jQuery jQuery HTML jQuery CSS jQuery DOM

Grafika JS

Grafika JS JS płótno JS Działka JS Chart.js Wykres JS Google JS D3.js

Przykłady JS

Przykłady JS JS HTML DOM Wejście JS HTML Obiekty HTML JS Wydarzenia JS HTML Przeglądarka JS Edytor JS Ćwiczenia JS JS Quiz Certyfikat JS

Referencje JS

Obiekty JavaScript Obiekty HTML DOM


AJAX - XMLHttpRequest


Obiekt XMLHttpRequest służy do żądania danych z serwera.


Wyślij żądanie do serwera

Aby wysłać żądanie do serwera, używamy metod open() i send() XMLHttpRequestobiektu:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Method Description
open(method, url, async) Specifies the type of request

method: the type of request: GET or POST
url: the server (file) location
async: true (asynchronous) or false (synchronous)
send() Sends the request to the server (used for GET)
send(string) Sends the request to the server (used for POST)

Adres URL — plik na serwerze

Parametr url open()metody, to adres do pliku na serwerze:

xhttp.open("GET", "ajax_test.asp", true);

Plik może być dowolnym rodzajem pliku, takim jak .txt i .xml, lub plikami skryptowymi serwera, takimi jak .asp i .php (które mogą wykonywać działania na serwerze przed wysłaniem odpowiedzi).


Asynchroniczny — prawda czy fałsz?

Żądania serwera powinny być wysyłane asynchronicznie.

Parametr asynchroniczny metody open() powinien mieć wartość true:

xhttp.open("GET", "ajax_test.asp", true);

Wysyłając asynchronicznie, JavaScript nie musi czekać na odpowiedź serwera, ale zamiast tego może:

  • wykonuj inne skrypty podczas oczekiwania na odpowiedź serwera
  • radzić sobie z odpowiedzią po przygotowaniu odpowiedzi

Domyślna wartość parametru async to async = true.

Możesz bezpiecznie usunąć trzeci parametr ze swojego kodu.

Synchroniczne XMLHttpRequest (async = false) nie jest zalecane, ponieważ JavaScript przestanie wykonywać, dopóki odpowiedź serwera nie będzie gotowa. Jeśli serwer jest zajęty lub wolny, aplikacja zawiesi się lub zatrzyma.


POBIERZ czy POST?

GETjest prostszy i szybszy niż POSTi może być używany w większości przypadków.

Jednak zawsze używaj żądań POST, gdy:

  • Plik z pamięci podręcznej nie jest opcją (zaktualizuj plik lub bazę danych na serwerze).
  • Wysyłanie dużej ilości danych na serwer (POST nie ma ograniczeń rozmiaru).
  • Wysyłanie danych wejściowych użytkownika (które mogą zawierać nieznane znaki), POST jest bardziej niezawodny i bezpieczny niż GET.

POBIERZ Żądania

Prosta GETprośba:

Przykład

xhttp.open("GET", "demo_get.asp");
xhttp.send();

W powyższym przykładzie możesz otrzymać wynik w pamięci podręcznej. Aby tego uniknąć, dodaj unikalny identyfikator do adresu URL:

Przykład

xhttp.open("GET", "demo_get.asp?t=" + Math.random());
xhttp.send();

Jeśli chcesz wysłać informacje tą GETmetodą, dodaj informacje do adresu URL:

Przykład

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford");
xhttp.send();

Sposób, w jaki serwer wykorzystuje dane wejściowe i jak serwer odpowiada na żądanie, wyjaśniono w kolejnym rozdziale.



Żądania POST

Prosta POSTprośba:

Przykład

xhttp.open("POST", "demo_post.asp");
xhttp.send();

Aby POST danych, takich jak formularz HTML, dodaj nagłówek HTTP z setRequestHeader(). Podaj dane, które chcesz przesłać w send()metodzie:

Przykład

xhttp.open("POST", "ajax_test.asp");
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Method Description
setRequestHeader(header, value) Adds HTTP headers to the request

header: specifies the header name
value: specifies the header value

Żądanie synchroniczne

Aby wykonać żądanie synchroniczne, zmień trzeci parametr w open()metodzie na false:

xhttp.open("GET", "ajax_info.txt", false);

Czasami do szybkiego testowania używa się async = false. Żądania synchroniczne znajdziesz również w starszym kodzie JavaScript.

Ponieważ kod będzie czekał na zakończenie serwera, nie ma potrzeby wykonywania onreadystatechange funkcji:

Przykład

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;

Synchroniczne XMLHttpRequest (async = false) nie jest zalecane, ponieważ JavaScript przestanie wykonywać, dopóki odpowiedź serwera nie będzie gotowa. Jeśli serwer jest zajęty lub wolny, aplikacja zawiesi się lub zatrzyma.

Nowoczesne narzędzia programistyczne są zachęcane do ostrzegania o używaniu żądań synchronicznych i mogą zgłaszać wyjątek InvalidAccessError, gdy wystąpi.