Najnowsze tutoriale tworzenie stron internetowych
 

AJAX - Wysłać żądanie do serwera


Przedmiotem XMLHttpRequest służy do wymiany danych z serwera.


Wyślij żądanie do serwera

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

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
metoda Opis
open(method, url, async) Określa typ zamówienie

method : typ zgłoszenia: GET lub POST
url : serwer (plik) lokalizacja
async : true (asynchroniczny) lub false (synchroniczne)
send() Wysyła żądanie do serwera (używane do GET )
send(string) Wysyła żądanie do serwera (używane do POST )

GET lub POST ?

GET jest prostsze i szybsze, niż POST i mogą być używane w większości przypadków.

Jednak zawsze używać POST żądań, gdy:

  • Buforowane plik nie jest opcją (zaktualizować plik lub bazę danych na serwerze).
  • Wysyłanie dużej ilości danych do serwera ( POST nie ma ograniczenia rozmiaru).
  • Przesyłanie danych wprowadzanych przez użytkownika (który może zawierać nieznane znaki), POST jest bardziej wytrzymałe i bezpieczne niż GET .

GET kupna

Prosty GET request:

Przykład

xhttp.open("GET", "demo_get.asp", true);
xhttp.send();
Spróbuj sam "

W powyższym przykładzie, można uzyskać wynik w pamięci podręcznej. Aby tego uniknąć, należy dodać unikatowy ID to the URL: ID to the URL:

Przykład

xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
xhttp.send();
Spróbuj sam "

Jeśli chcesz wysłać informacje z GET metody, dodaj informację do adresu URL:

Przykład

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford", true);
xhttp.send();
Spróbuj sam "

POST Wnioski

Prosty POST request:

Przykład

xhttp.open("POST", "demo_post.asp", true);
xhttp.send();
Spróbuj sam "

Aby POST dane jak formularz HTML, dodać HTTP header z setRequestHeader() . Podaj dane, które chcesz wysłać w send() metoda:

Przykład

xhttp.open("POST", "ajax_test.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Spróbuj sam "

metoda Opis
setRequestHeader(header, value) Dodaje nagłówki HTTP na żądanie

header : określa nazwę nagłówka
value : określa wartość nagłówka

Url - plik na serwerze

url parametr open() metoda, to adres do pliku na serwerze:

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

Plik może być dowolny rodzaj pliku, podobnie jak .txt i .xml lub pliki skryptów serwerowych jak .asp i .php (który może wykonywać czynności na serwerze przed wysłaniem odpowiedzi do tyłu).


Asynchroniczne - True czy False ?

AJAX oznacza Asynchronous JavaScript and XML, a dla obiektu XMLHttpRequest, aby zachowywać się jak AJAX, na async parametru open() metody musi być ustawiona na wartość true:

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

Wysyłanie żądań asynchronicznych jest ogromny postęp dla twórców stron internetowych. Wiele zadań wykonywanych na serwerze są bardzo czasochłonne. Przed AJAX, operacja ta może spowodować, że aplikacja do zawieszenia lub zatrzymania.

Z AJAX, JavaScript nie trzeba czekać na odpowiedź serwera, ale może zamiast:

  • wykonywanie innych skryptów podczas oczekiwania na odpowiedź serwera
  • radzić sobie z odpowiedzią, kiedy gotowa odpowiedź

Async=true

Podczas korzystania class = "notranslate" asynchronicznych = true, określ funkcję do wykonania, gdy odpowiedź jest gotowa w razie onreadystatechange:

Przykład

xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
    document.getElementById("demo").innerHTML = xhttp.responseText;
  }
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Spróbuj sam "

Dowiesz się więcej o onReadyStateChange w późniejszym rozdziale.


Async=false

Aby korzystać async=false , zmień trzeci parametr w open() metoda na false:

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

Korzystanie async=false nie jest zalecana, ale dla kilku małych wniosków może to być ok.

Pamiętaj, że JavaScript nie będzie w dalszym ciągu wykonywać, dopóki odpowiedź serwera jest gotowy. Jeśli serwer jest zajęty lub wolny, aplikacja będzie zawiesić lub przerwać.

Uwaga: W przypadku korzystania async=false , nie pisz funkcję onreadystatechange - wystarczy umieścić kod po send() oświadczenie:

Przykład

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