AJAX - XMLHttpRequest

XMLHttpRequest inatumia mawasiliano ya data kati ya server

Kumpatia mawasiliano kwa server

Kama unataka kumpatia mawasiliano kwa server, tukipata XMLHttpRequest kwanza kwa mawasiliano: open() na send() Method:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Kazi Inaonekana kama
open(method, url, async)

Inasababisha aina ya mawasiliano

  • method:ainambo ya mawasiliano: GET au POST
  • url:kiwango cha server (faili) chako
  • async:true (kwa kina) au false (kwa kina)
send() Kumpatia mawasiliano kwa server (kwa sababu ya GET)
send(string) Kumpatia mawasiliano kwa server (kwa sababu ya POST)

GET au POST?

GET ina uwezo mkubwa sana na inafaa kwa kawaida.

Tukasikia hivyo, tukipata kama:

  • Faili za kucachingu haitakuwa chaguo (kumwambia faili au database kwenye server)
  • Kumpatia data kubwa kwa mawasiliano ya server (POST ina umri wa kumtaka kubwa sana)
  • Kumpatia habari ya kiingiliano (inaweza kuhadhi herufi zinaukili), POST ina uwezo mkubwa na ina umri wa kumtaka:

Mawasiliano ya GET

Mawasiliano ya GET ya kawaida:

Mifano

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

Jifunze tena

Kwenye mafanikio yaliyotokana na mivuno hii, inaweza kubadilika. Tukisikia hivyo, tukipata ID mpya kwa URL:

Mifano

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

Jifunze tena

Kama unataka kumpatia habari kwa sababu ya GET, tukipata kwa URL hii:

Mifano

xhttp.open("GET", "demo_get2.asp?fname=Bill&lname=Gates", true);
xhttp.send();

Jifunze tena

Mawasiliano ya POST

Mawasiliano ya POST ya kawaida:

Mifano

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

Jifunze tena

Kama unataka kumpatia data kama formu ya HTML, tukipata kwa: setRequestHeader() Ongeza kipya cha HTTP. Tafadhali tukosea: send() Mefano hali anaweza kusikia data inayohatwa kwa mawasiliano:

Mifano

xhttp.open("POST", "ajax_test.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Bill&lname=Gates");

Jifunze tena

Kazi Inaonekana kama
setRequestHeader(header, value)

Kuingia kwenye jibu kwa kushika HTTP header

  • headerKuna jina la kumekadiri
  • valueKuna uwezo wa kumekadiri

url - Faili kwenye mtaalamu

Kazi ya open() url Inaonyesha eneo la faili kwenye mtaalamu:

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

Faili hii inaweza kuwa kwa aina yoyote, kama .txt na .xml, au faili ya mtaalamu ya mtaalamu, kama .asp na .php (inaendelea kufanya kazi kwenye mtaalamu kabla ya kufika jibu).

Asynchronous - true au false?

Kama ingia kufanya kazi ya usimamiziopen() kazi async Inafaa kuwaingia kama true

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

Kufanya kazi ya usimamizi kwa mtaalamu ni msaada kubwa kwa wakimbizi wa web. Kazi nyingi zinaenea sana katika mtaalamu. Kwenye AJAX, hii inaweza kumfanya programu inasikia ama inakwenda kwenye msaada.

Kwa kusaidia kwa usimamizi, JavaScript haamini wakati mtaalamu unaendelea, bali unaweza:

  • Kufanya mengine ya programu wakati unaongea na mtaalamu
  • Kuendeleza jibu kama ujumbe unaendelea

onreadystatechange mafano

Kwa kuzungumza kwa XMLHttpRequest, unaweza kubadilisha programu inayotendeka kama jibu lilitumika.

Hii programu inahusishwa na kipindi cha XMLHttpResponse kina. onreadystatechange Inayodaiwa katika mafano yake:

Mifano

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

Jifunze tena

Ukitaka kufikia makala zaidi kuhusu onreadystatechange.

Kazi ya usimamizi

Kama ingia kufanya kazi ya usimamizi, tafadhali ingia open() 方法中的第三个参数设置为 false

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

有时 async = false 用于快速测试。你也会在更老的 JavaScript 代码中看到同步请求。

由于代码将等待服务器完成,所以不需要 onreadystatechange 函数:

Mifano

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

Jifunze tena

Hutafikia na kumpongeza XMLHttpRequest wa kuzingatia huzuni (async = false), kwa sababu JavaScript itakapungua kufanya kila kitu hadi kufikia hatua ya msaidizi. Ikiwa msaidizi hauonekani kwa kuzingatia au kwa kusababisha kwa kusababisha, programu inaweza kumtegemea ama kumfungua.

XMLHttpRequest wa kuzingatia huzuni inapendekezwa kuondoka kwenye mabaki wa mabadi wa web, lakini matokeo hayo yanaweza kutoa muda mrefu sana.

Vifaa vya uandishi vya sasa vinapatikana kuwa na kina kwa kumtoa uhusiano wa kumwambia, na wakati huo hauonekani kuwa inakataa hatari, inaweza kutoa kosa ya hatarishii ya kufikia huzuni. Matokeo hayo yanahitaji muda mrefu sana.