Latest web development tutorials

XML DOM - HttpRequest obiektów

Poprzez obiektu XMLHttpRequest, można zaktualizować sekcję strony internetowej bez przeładowywania całej strony.


Obiekt XMLHttpRequest

Obiekt XMLHttpRequest jest wykorzystywany do wymiany danych z serwerem za kulisami.

Obiekt XMLHttpRequest jestmarzeniem każdego dewelopera,ponieważ można:

  • Aktualizacja strony internetowej, bez przeładowania strony
  • Po załadowaniu strony z danymi żądania serwer
  • Po załadowaniu strony dane otrzymane z serwera
  • Wysyłanie danych do serwera w tle

Tworzenie obiektu XMLHttpRequest

Wszystkie nowoczesne przeglądarki (IE7 +, Firefox, Chrome, Safari i Opera) posiada wbudowany obiekt XMLHttpRequest.

Tworzenie składni obiektu XMLHttpRequest

xmlhttp=new XMLHttpRequest();

Starsze wersje programu Internet Explorer (IE5 i IE6) z użyciem obiektów ActiveX:

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

Do obsługi wszystkich nowoczesnych przeglądarek, w tym IE5 i IE6, należy sprawdzić, czy przeglądarka obsługuje obiekt XMLHttpRequest. Jeśli tak, to stworzyć obiekt XMLHttpRequest, jeśli tak nie jest, należy utworzyć obiekt ActiveX:

Przykłady

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

Spróbuj »


Wyślij zapytanie do serwera

W celu wysłania żądania do serwera, używamy otworzyć obiekt XMLHttpRequest jest () i send () metodę:

xmlhttp.open("GET","xmlhttp_info.txt",true);
xmlhttp.send();

方法 描述
open(method,url,async) 规定请求的类型,URL,请求是否应该进行异步处理。

method:请求的类型:GET 或 POST
url:文件在服务器上的位置
async:true(异步)或 false(同步)
send(string) 发送请求到服务器。

string:仅用于 POST 请求


GET lub POST?

GET prostsze POST i szybkie i można je stosować w wielu przypadkach.

Jednak zawsze używać POST wniosek w następujących okolicznościach:

  • pliki buforowane nie jest rozwiązaniem (lub pliku bazy danych na serwerze aktualizacji)
  • Ilość danych przesyłanych do serwera (post Brak limitu wielkości) duża
  • Przesyłanie danych wejściowych użytkownika (może zawierać nieznane znaki), POST mocniejsze i bardziej bezpieczne niż GET

URL - plik na serwerze

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

xmlhttp.open("GET","xmlhttp_info.txt",true);

Plik może być dowolny typ pliku (takich jak .txt i .xml) lub pliki skryptów (takie jak serwer i .php .html, może wykonywać czynności na serwerze przed odesłaniem odpowiedzi).


Asynchroniczne - Prawda czy fałsz?

Na żądanie transmisji asynchronicznej, sposób asynchroniczny argumentem open () musi być ustawiona na wartość true:

xmlhttp.open("GET","xmlhttp_info.txt",true);

Wyślij asynchronicznego żądania web developer to ogromny krok naprzód. Na serwerze do wykonywania wielu zadań są bardzo czasochłonne.

Poprzez wysłane asynchronicznie, JavaScript nie trzeba czekać na odpowiedź serwera, ale może być zastąpiony przez:

  • Podczas oczekiwania na odpowiedź z serwera, wykonać dodatkowe skrypty
  • Gotowy do obsługi odpowiedzi, gdy odpowiedź

Async = true

Przy użyciu asynchronicznie = prawdziwe, gdy w odpowiedzi na określone zdarzenie funkcja onreadystatechange gotowe do realizacji:

Przykłady

xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","xmlhttp_info.txt",true);
xmlhttp.send();

Spróbuj »


Asynchroniczny = false

Na trzecim async parametru = false, zmień open () Metoda jest fałszywe:

xmlhttp.open("GET","xmlhttp_info.txt",false);

Nie zaleca asynchroniczny = false, ale przy stosowaniu kilku małą prośbę lub puszkę.

Pamiętaj, że JavaScript w odpowiedzi serwera nie będzie kontynuowana, dopóki nie są gotowe. Jeśli serwer jest zajęty lub wolny, aplikacja zostanie zawieszone lub przerwane.

Uwaga: W przypadku korzystania z asynchronicznie = false, nie pisz onreadystatechange funkcji - wystarczy umieścić kod po send () oświadczenia, aby:

Przykłady

xmlhttp.open("GET","xmlhttp_info.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

Spróbuj »


Odpowiedź serwera

Aby uzyskać odpowiedź od serwera, należy responseText lub responseXML własność obiekt XMLHttpRequest jest.

属性 描述
responseText 获取响应数据作为字符串
responseXML 获取响应数据作为 XML 数据


Obiekt responseText

Jeśli odpowiedź z serwera nie jest XML, należy użyć właściwości responseText.

Obiekt responseText zwraca odpowiedź jako ciąg znaków, można go użyć odpowiednio:

Przykłady

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

Spróbuj »


Obiekt responseXML

Jeśli odpowiedź nie jest XML z serwera i chcesz go rozwiązać do obiektu XML, należy użyć właściwości responseXML:

Przykłady

Prośba plików cd_catalog.xml i analizowania odpowiedzi:

xmlDoc=xmlhttp.responseXML;
var txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + "
";
}
document.getElementById("myDiv").innerHTML=txt;

Spróbuj »


onreadystatechange wydarzenie

Jeżeli wniosek jest wysyłany do serwera, musimy wykonać pewne działania na podstawie odpowiedzi.

onreadystatechange zdarzenie jest wywoływane za każdym razem z readyState zmian.

Obiekt XMLHttpRequest readyState posiada status.

Trzy ważne właściwości obiektu XMLHttpRequest:

属性 描述
onreadystatechange 存储函数(或函数的名称)在每次 readyState 属性变化时被自动调用
readyState 存放了 XMLHttpRequest 的状态。从 0 到 4 变化:
0:请求未初始化
1:服务器建立连接
2:收到的请求
3:处理请求
4:请求完成和响应准备就绪
status 200:"OK"
404:找不到页面

W onreadystatechange razie możemy określić, co się stanie, gdy czas jest gotowy do przetwarzania odpowiedzi serwera.

Gdy readyState jest 4 lub 200 stan, reakcja przygotowane:

Przykłady

xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}

Spróbuj »

Uwaga: onreadystatechange zdarzenie jest wywoływane za każdym razem, gdy zmienia readyState, wyzwalane w sumie cztery razy.


Przykłady s

Więcej przykładów

Przez getAllResponseHeaders () do pobierania informacji z nagłówka
Aby pobrać zasób (document) informacje nagłówka.

() Pobiera określony informacje nagłówka getResponseHeader
Aby pobrać zasobu (pliku) w celu określenia informacji nagłówka.

pobieranie zawartości pliku ASP
Gdy użytkownicy wpisać znaki w polu tekstowym, jak strony internetowe komunikują się z serwerem WWW.

Pobieranie treści z bazy danych
Strona internetowa, jak wydobyć informacje z bazy danych za pomocą obiektu XMLHttpRequest.

pobieranie zawartości pliku XML
Załóż XMLHttpRequest do pobierania danych z pliku XML i wyświetlać dane w tabeli HTML.