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
|
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();
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();
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();
Mawasiliano ya POST
Mawasiliano ya POST ya kawaida:
Mifano
xhttp.open("POST", "demo_post.asp", true); xhttp.send();
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");
Kazi | Inaonekana kama |
---|---|
setRequestHeader(header, value) |
Kuingia kwenye jibu kwa kushika HTTP header
|
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();
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;
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.