XML DOM - XMLHttpRequest object
- Nakaraang Pahina DOM Text
- Susunod na Pahina DOM XMLSerializer
Objek ng XMLHttpRequest
Ang XMLHttpRequest object ay nagbibigay ng buong akses sa HTTP protocol, kasama ang kakayahan na gumawa ng POST at HEAD requests at karaniwang GET requests. Ang XMLHttpRequest ay maaaring ibalik nang magkakasabay o magkakahiwalay ang tugon ng web server, at maaaring ibalik ang nilalaman bilang text o isang DOM document.
Kahit na tinatawag na XMLHttpRequest, ito ay hindi limitado sa gamit kasama ang XML document: maaring tatanggap ito ng anumang porma ng text document.
Ang XMLHttpRequest object ay tinatawag na AJAX ng isang pangunahing feature ng Web application architecture.
browser support
XMLHttpRequest ayon sa lahat ng modernong browser ay may magandang suporta. Ang tanging browser dependency ay ang paglikha ng XMLHttpRequest object. Sa IE 5 at IE 6, kinakailangang gamitin ang IE-specific na ActiveXObject() constructor function. Tulad ng sa Objek ng XMLHttpRequest Ito ang binabanggit sa Seksyon na ito.
W3C Standardization
Ang XMLHttpRequest object ay hindi pa pinapatunayan, ngunit nagsimula ang W3C ng pagtatatag ng standard, ang nilalaman ng manwal na ito ay batay sa trabaho ng draft na pinapatunayan.
Ang kasalukuyang implementasyon ng XMLHttpRequest ay halos parehong, ngunit mayroong maliliit na pagkakaiba sa standar. Halimbawa, isang implementasyon ay maaaring ibigay ang null, habang ang standard ay nangangailangan ng walang laman na string, o isang implementasyon ay maaaring itakda ang readyState sa 3 ng walang kasiguruhan na ang lahat ng header ng tugon ay magiging available.
Katangian
readyState
Ang estado ng hiling ng HTTP. Kapag ang XMLHttpRequest ay nilikha sa unang pagkakataon, ang halaga ng katangian na ito ay mula sa 0, hanggang sa nakatanggap ng kumpletong HTTP tugon, ang halaga na ito ay tataas sa 4.
Mayroon ding hindi opisyal na pangalan sa bawat isa sa 5 na estado, ang sumusunod na talahanan ay naglalarawan ng estado, pangalan at kahulugan:
Estado | Pangalan | Paglalarawan |
---|---|---|
0 | Uninitialized | Inisyal na estado. Ang XMLHttpRequest object ay nilikha o naibalik sa estado ng reset sa pamamagitan ng abort() method. |
1 | Open | Ang open() method ay tinawagan, ngunit hindi tinawagan ang send() method. Ang hiling ay hindi pa ipinadala. |
2 | Sent | Ang Send() method ay tinawagan, ang HTTP hiling ay ipinadala sa Web server. Hindi nakatanggap ng tugon. |
3 | Receiving | Ang lahat ng header ng tugon ay nakatanggap. Ang response body ay nagsisimula ng pagtanggap ngunit hindi pa nakumpleto. |
4 | Loaded | Ang HTTP tugon ay kumpleto na naakma. |
Ang halaga ng readyState ay hindi baba, maliban kung isang hiling ay tinawagan ang abort() o open() method habang ginagawa ang pagproseso ng hiling. Bawat beses na ang halaga ng katangian na ito ay tataas, ay magiging trigger ang onreadystatechange handler.
responseText
Ang natanggap na response body ng server hanggang ngayon (hindi kasama ang header), o kung hindi pa nakatanggap ng data, ay isang walang laman na string.
Kung ang readyState ay mas mababa sa 3, ang katangian na ito ay isang walang laman na string. Kapag ang readyState ay 3, ang katangian na ito ay ibibigay ang natanggap na bahagi ng tugon. Kapag ang readyState ay 4, ang katangian na ito ay ibibigay ang kumpletong response body.
Kung ang tugon ay naglalaman ng header na tinukoy ang character encoding ng response body, gamitin ang encoding na iyon. Kung hindi, ipagpapalagay na ginagamit ang Unicode UTF-8.
responseXML
Sa tugon sa hiling, ay napapaliwanag bilang XML at bilang Object ng DocumentIbalik.
status
Na ibabalik ng server HTTP na estado ng codeTulad ng 200 na naglalarawan na matagumpay, at 404 na naglalarawan na pagkakamali na "Not Found". Ang pagbabasa ng ito ay magiging isang kagipitan kapag ang readyState ay mas mababa sa 3.
statusText
Ang katangian na ito ay gumagamit ng pangalan sa halip ng numero sa pagtutukoy ng estado ng kahilingan ng HTTP. Iyun ay, kapag ang estado ay 200, ito ay "OK", kapag ang estado ay 404, ito ay "Not Found". Katulad ng status na katangian, ang pagbabasa ng ito ay magiging isang kagipitan kapag ang readyState ay mas mababa sa 3.
Handler ng event
onreadystatechange
Ang function ng handler ng event na tinatawag kapag nagbabago ang readyState na katangian. Kapag ang readyState ay 3, ito ay maaaring tumawag muli.
Paraan
abort()
Ihiwalay ang kasalukuyang tugon, isara ang koneksyon at tapusin ang anumang nagpapatuloy na aktibidad ng network.
Ang paraan na ito ay nagpaparoon sa XMLHttpRequest na bagay bilang readyState na 0, at naghihiwalay ng lahat ng napagpasyang aktibidad ng network. Halimbawa, kung ang kahilingan ay gumugol ng masyadong pangahaba ng panahon, at ang tugon ay hindi na kinakailangan, maaaring ito ay tawagan ang paraan na ito.
getAllResponseHeaders()
Ibalik ang HTTP na tugon na ulo bilang hindi napapaliwanag na string.
Kung ang readyState ay mas mababa sa 3, ang paraan na ito ay ibabalik null. Sa kabilang banda, ito ay ibabalik ang lahat ng mga HTTP na tugon na ulo na inilathal ng server. Ang ulo ay ibabalik bilang isang magkasamang string, isang ulo sa bawat linya. Ang bawat linya ay hinahati ng tabi ng linya na "\r\n".
getResponseHeader()
Ibalik ang halaga ng tinukoy na HTTP na tugon na ulo. Ang parametro ay ang pangalan ng tinukoy na HTTP na tugon na ulo na dapat ibalik. Maaring gamitin ang anumang anyo ng pagkakabadyet sa pagtutukoy ng ulo, at ang paghahalintulad sa tugon na ulo ay hindi nangangahulugan ng anyo ng pagkakabadyet.
Ang bunga ng paraan na ito ay ang halaga ng tinukoy na HTTP na tugon na ulo, kung hindi natanggap ang ulo o ang readyState ay mas mababa sa 3, ito ay walang laman na string. Kung natanggap ang ilang may tinukoy na pangalan na ulo, ang halaga ng ulo ay nakaugnay at ibinabalik, gamit ang kumukulong at walang laman na itakda na paghahati sa bawat halaga ng ulo.
open()
Inilunsad ang HTTP na kahilingang parametro, tulad ng URL at HTTP na paraan, ngunit hindi inililipat ang kahilingan.
send()
Ipadala ang HTTP na kahilingan, gamit ang mga parametro na inalathal sa open() na paraan, at ang opsyonal na kahilingang katawan na inalathal sa paraan na ito.
setRequestHeader()
Ilang HTTP na kahilingan ay naglalagay o nagdagdag sa isang bukasan pero hindi inihayag na kahilingan.
XMLHttpRequest.open()
Nagpapatay ng HTTP na parameter ng kahilingan
Gramata
open(method, url, async, username, password)
Ang parameter na method ay ang HTTP na paraan na gagamitin para sa kahilingan. Ang halaga kasama ang GET, POST, at HEAD.
Ang parameter na url ay ang pinakamataas na bahagi ng kahilingan. Ang karamihan sa mga browser ay nagpapatupad ng isang seguridad na patakaran ng parehong pinanggalingan, at nangangailangan na ang URL na ito ay may parehong pangalan ng host at port na ang teksto na naglalaman ng script.
Ang parameter na async ay nagtutukoy na ang kahilingan ay dapat na pinapatakbo nang asynchronous. Kung ang parameter na ito ay false, ang kahilingan ay synchronous, ang pagtawag sa send() ay magiging block hanggang kumpleto na natanggap ang tugon. Kung ang parameter na ito ay true o hindi tinukoy, ang kahilingan ay asynchronous, at karaniwang kailangan ng event handler na onreadystatechange.
Ang mga parameter na username at password ay opsyonal, nagbibigay ng aklat ng pagkakakilanlan para sa awtorisasyon na kailangan ng url. Kung tinukoy, papalitan nila ang anumang awtorisasyon na tinukoy ng url.
Paliwanag
Ang paraan na ito ay nagpapatay ng mga parameter ng kahilingan upang gamitin sa send() method sa hinaharap. Ito ay nagtatakda ng readyState sa 1, naglilinis ng lahat ng naunang tinukoy na header ng kahilingan at naunang natanggap na header ng tugon, at nagtatakda ng default na halaga ng responseText, responseXML, status, at statusText. Kapag readyState ay 0 (kapag ang XMLHttpRequest object ay nilikha o tinatawag ang abort() method) at kapag readyState ay 4 (kapag natanggap na ang tugon), ligtas ang pagtawag sa paraan na ito. Kapag tinatawag ang paraan na ito para sa anumang ibang estado, ang pagkilos ng open() method ay tinukoy.
Bukod sa pag-iimbak ng mga parameter ng kahilingan na gagamitin sa send() method, at paglilinaw ng XMLHttpRequest object upang mabuwagin, walang ibang pagkilos ang open() method. Maaaring maingat na, kapag tinatawag ang paraan na ito, ang implementasyon ay hindi nagbibukas ng koneksyon sa web server.
XMLHttpRequest.send()
magpadala ng HTTP na kahilingan
Gramata
magpadala ng (body)
Kung ang HTTP na paraan na tinukoy sa pamamagitan ng pagtawag sa open() ay POST o PUT, ang parameter na body ay tinukoy ang request body bilang string o Object ng DocumentKung hindi kinakailangan ang request body, ang parameter na ito ay null. Para sa anumang ibang paraan, ang parameter na ito ay hindi magagamit, dapat na null (mayroong mga implementasyon na hindi pinapayagan ang pag-alis ng parameter).
Paliwanag
Ang paraan na ito ay nagdudulot ng pagpapadala ng isang HTTP hiling. Kapag wala pa ang pagtawag sa open(), o mas tiyak, kapag ang readyState ay hindi 1, ang send() ay magtapon ng isang kagipitan. Sa kabilang banda, kapag mayroon, ito ay magpadala ng isang HTTP hiling, na binubuo ng mga sumusunod na bahagi:
- Ang paraan ng HTTP, URL, at ang kredensyal na itinakda noong nakaraang pagtawag sa open() (kung mayroon).
- Ang header ng hiling na itinakda noong nakaraang pagtawag sa setRequestHeader() (kung mayroon).
- Ibinigay sa paraan na ito Body Parameter.
Kapag ang hiling ay na-irelease, ang send() ay magtatalaga ng readyState sa 2 at magbigay ng trigger sa handler ng onreadystatechange.
Kung ang parameter na async ng pagtawag sa open() ay false, ang paraan na ito ay magpahintulot at hindi na ibabalik, hanggang ang readyState ay 4 at ang tugon ng server ay kumpleto na natanggap. Sa kabilang banda, kapag ang parameter na async ay true, o kapag ang parameter ay hindi tinatalaga, ang send() ay agad na ibabalik, at tulad ng ibabang inilalarawan, ang tugon ng server ay gagawing proseso sa background thread.
Kung ang tugon ng server ay may HTTP redirection, ang paraan na send() o ang background thread ay awtomatikong sumunod sa redirection. Kapag ang lahat ng mga header ng HTTP na tugon ay natanggap, ang send() o ang background thread ay magtatalaga ng readyState sa 3 at magbigay ng trigger sa handler ng onreadystatechange. Kapag ang tugon ay mahaba, ang send() o ang background thread ay maaring magbigay ng trigger sa handler ng onreadystatechange sa estado 3: ito ay maaring magiging isang tagapag-indikasyon ng progreso ng pag-download. Sa wakas, kapag ang tugon ay nakumpleto, ang send() o ang background thread ay magtatalaga ng readyState sa 4 at magbigay ng huling trigger sa handler ng onreadystatechange.
XMLHttpRequest.setRequestHeader()
Gramata
setRequestHeader(name, value)
Ang parameter na name ay ang pangalan ng header na itinakda. Ang parameter na ito ay hindi dapat kasama ang bakanteng, tuldok, o pagsasauli ng linya.
Ang parameter na value ay ang halaga ng header. Ang parameter na ito ay hindi dapat kasama ang pagsasauli ng linya.
Paliwanag
Ang paraan na setRequestHeader() ay nagtatalaga ng isang header ng HTTP na hinihiling na kasama sa kahit anong hiling na ipapalabas sa pamamagitan ng susunod na pagtawag sa send(). Ang paraan na ito ay puwedeng gamitin lamang kapag ang readyState ay 1, halimbawa, pagkatapos ng pagtawag sa open(), pero bago ang pagtawag sa send().
Kung ang header na may tiyak na pangalan ay na-assign na, ang bagong halaga ng header na ito ay: ang na-assign na halaga, kasama ang komma, bakanteng, at ang halaga na itinakda ng pagtawag na ito.
Kung tinukoy ng pagtawag sa open() ang katangian ng pagkakakilanlan, ang XMLHttpRequest ay nagpapadala ng isang magandang header ng Authorization ng kailangan. Subalit, maari kang gamitin ang setRequestHeader() upang magdagdag ng header na ito. Katulad nito, kung ang web server ay nakaimbak at ipinasa ang cookie na may kaugnayan sa URL na tinukoy sa open(), ang magandang header ng Cookie o Cookie2 ay awtomatikong kasama sa kahilingan. Maaari mo ring gamitin ang setRequestHeader() upang idagdag ang mga cookie na ito sa header. Ang XMLHttpRequest ay maaari rin ng magbigay ng isang default na halaga sa header ng User-Agent. Kung gagawin ito, anumang halaga na iyong itutukoy sa header na ito ay idadagdag sa likod ng default na halaga.
May ilang header ng request na tinatatakbo ng XMLHttpRequest sa halip na sa pamamagitan ng pamamethod, upang sumunod sa protokol ng HTTP. Kabilang dito ang mga header na may kaugnayan sa proxy:
- Host
- Connection
- Keep-Alive
- Accept-charset
- Accept-Encoding
- If-Modified-Since
- If-None-Match
- If-Range
- Range
- Nakaraang Pahina DOM Text
- Susunod na Pahina DOM XMLSerializer