AJAX - XMLHttpRequest 对象

XMLHttpRequest 对象是 AJAX 的基石。

  1. Kuanzisha kinaingia ya XMLHttpRequest
  2. Kufaa kifaa kinachotumika kama kinaingia
  3. 打开 XMLHttpRequest 对象
  4. 向服务器发送请求

Kinaingia ya XMLHttpRequest

所有现代浏览器都支持 Kinaingia ya XMLHttpRequest.

XMLHttpRequest 对象可用于在后台与 Web 服务器交换数据。这意味着可以更新网页的部分内容,而无需重新加载整个页面。

Kuanzisha kinaingia ya XMLHttpRequest

Vifaa vya kikabila vya kidunia vya kuzioa (Chrome, Firefox, IE, Edge, Safari, Opera) wamejua kinaingia ya XMLHttpRequest kwa sababu ya kinaingia. Kinaingia ya XMLHttpRequest.

Muundo wa kuanzisha kinaingia ya XMLHttpRequest:

variable = new XMLHttpRequest();

Kufaa kifaa kinachotumika kama kinaingia

Kifaa kinachotumika kama kinaingia ni kifaa kinachotumika kama kinaingia kinachotumika kama kinaingia kinachotumika kama kinaingia.

Kama hiki ni kesi, kifaa kinachotumika kama kinaingia kinahitaji kufaa kifaa kinachotumika kama kinaingia kinahitaji kufaa kifaa kinachotumika kama kinaingia.

xhttp.onload = function() {
  // Kwa sababu ya kwenda kufikia kwa kinaingia, kifaa kinachotumika kama kinaingia kinahitaji kufaa kifaa kinachotumika kama kinaingia.
}

Kumwambia tafuta

Kama unataka kumwambia tafuta kwa sababu ya kikosi, unaweza kutumia kinaingia ya XMLHttpRequest kwa sababu ya kinaingia. open() na send() Muundo:

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

Mifano

// Kuanzisha kinaingia ya XMLHttpRequest
const xhttp = new XMLHttpRequest();
// Kufaa kifaa kinachotumika kama kinaingia
xhttp.onload = function() {
  // Unaweza kutumia data hapa
}
// Kuwakilisha tafuta
xhttp.open("GET", "ajax_info.txt");
xhttp.send();

Tukio kufanya mafanikio

Uhusiano kwa kikosi chenye jina tofauti (Access Across Domains)

Kwa sababu ya usalama, vifaa vya kikabila wa kidunia hazivumea kupata uhusiano kwa kikosi chenye jina tofauti.

Hii inamaanisha sayari na faili ya XML inayotafuta lazima iwe kwenye kikosi kimoja.

Mivuno ya CodeW3C.com inatokana na faili ya XML yenye kikosi CodeW3C.com.

Kama unataka kutumia mivuno ya juu kwenye sayari yako moja, faili ya XML inayotukua lazima iwe kwenye server yako mwenyewe.

Muundo wa XMLHttpRequest kwa sababu ya kinaingia.

Muundo Maelezo
new XMLHttpRequest() Kumengeneza kinaingia ya XMLHttpRequest kipya.
abort() Inosikitisha tafuta hivi karibuni.
getAllResponseHeaders() Inatoa ujumbe wa kipimo cha kikosi.
getResponseHeader() Inatoa ujumbe wa kipimo cha kikosi kinachotumika.
open(method, url, async, user, psw)

Inadai tafuta.

  • methodKipenyo cha aina ya tafuta: GET au POST
  • urlKipenyo cha eneo la faili: url
  • asyncKipenyo cha: true (kwa uharibifu) au false (kwa uharibifu)
  • userKipenyo cha jina la mtumishi: user
  • pswKipenyo cha nafasi: psw
send() Kuzingiza tafuta kwa sababu ya tafuta GET.
send(string) Kuzingiza tafuta kwa sababu ya tafuta POST.
setRequestHeader() Kungawezesha kuingiza kipimo/kitambaa cha kipendekezo cha kuzingiza.

Mimeno ya XMLHttpRequest kwa sababu ya kinaingia.

Mfano Maelezo
onload Kufaa kifaa kinachotumika kama inapokwenda kumwambia tafuta.
onreadystatechange Kufaa kifaa kinachotumika kama kinaanza kubadilika kinaingia kwenye hali ya readyState.
readyState

Hifadhi hali ya XMLHttpRequest

  • 0: Msaada haifikii
  • 1: Muungano wa server umefikia
  • 2: Msaada umefikia
  • 3: Msaada unaendelea kufanywa
  • 4: Msaada unaendelea kufikia na jibu linaunda
responseText Inarudi data ya jibu kama stringi
responseXML Inarudi data ya XML kwa jibu
hali

Inaonyesha namba hali ya msaada wa angeuza

  • 200: "Sawa"
  • 403: "Hatarishwa"
  • 404: "Haiwafikia"

Kwa kufikia orodha kuu, tazama Kikili cha Http Message Reference

statusText Inarudi ujumbe wa hali (kama "Sawa" au "Haiwafikia")

Mfano ya onload

Kwa kumtumia XMLHttpRequest, inaweza kufanya kifunzi cha kikao cha kina inayotumika kwa kumfanya kila mara jibu linaunda

Tafadhali tukufanya kifunzi kwenye kifaa XMLHttpRequest onload Kifunzi hiki kinadefini kwenye

Mifano

xhttp.onload = function() {
  document.getElementById("demo").innerHTML = this.responseText;
}
xhttp.open("GET", "ajax_info.txt");
xhttp.send();

Tukio kufanya mafanikio

Mfano wa kikao cha kina zaidi

Kama kuna msaada wa AJAX zaidi kwenye tovuti, lazima kujue kifunzi cha inayofanya XMLHttpRequest kwa kila kazi AJAX na kujue kifunzi cha kikao cha kina kwa kila kazi AJAX

Inafikia kwa kufanya kwa kikao cha kina URL na kifunzi cha inayotumika kwa kumfanya kila mara jibu linaunda

Mifano

loadDoc("url-1", myFunction1);
loadDoc("url-2", myFunction2);
function loadDoc(url, cFunction) {
  const xhttp = new XMLHttpRequest();
  xhttp.onload = function() {cFunction(this);}
  xhttp.open("GET", url);
  xhttp.send();
}
function myFunction1(xhttp) {
  // Hii ni kikao cha kina
}
function myFunction2(xhttp) {
  // Hii ni kikao cha kina
}

Mfano ya onload

readyState Mfano hifadhi hali ya XMLHttpRequest

onreadystatechange Mfano inadefini kifunzi cha kuleta msaada kila mara hali ya readyState inapungua

hali Mfano na statusText Mfano hifadhi hali ya kifaa XMLHttpRequest

Mfano Maelezo
onreadystatechange Inadefini kifunzi cha inayotumika kwa kumfanya kila mara hali ya readyState inapungua
readyState

Hifadhi hali ya XMLHttpRequest

  • 0: Msaada haifikii
  • 1: Muungano wa server umefikia
  • 2: Msaada umefikia
  • 3: Msaada unaendelea kufanywa
  • 4: Msaada unaendelea kufikia na jibu linaunda
hali

Inaonyesha namba hali ya msaada wa angeuza

  • 200: "Sawa"
  • 403: "Hatarishwa"
  • 404: "Haiwafikia"

Kwa kufikia orodha kuu, tazama Kikili cha Http Message Reference

statusText statusText

Inarudi ujumbe wa hali (kama "OK" au "Haijafoundiwa").

Kila mara inachangia readyState itakuwa inatumiwa kikamilifu kwa tukio onreadystatechange. 4 na status ni 200 Kwa sababu ya uharibifu wa jibu:

Mifano

function loadDoc() {
  const xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML =
      this.responseText;
    }
  };
  xhttp.open("GET", "ajax_info.txt");
  xhttp.send();
}

Tukio kufanya mafanikio

Tukio onreadystatechange linaathiriwa mara nne (1-4), kila mara inachangia readyState mara moja.