AJAX - XMLHttpRequest
- ຫົວທາງເບິ່ງຫຼັງ AJAX XMLHttp
- ຫົວທາງເບິ່ງຕໍ່ໄປ AJAX ການຕອບຕາມ
XMLHttpRequest ເປັນວັດຖຸທີ່ໃຊ້ເພື່ອສົ່ງຂໍ້ມູນຕາມກັບທີ່ສຳນັກງານ.
ສົ່ງຂໍ້ມູນໄປຫາທີ່ສຳນັກງານ
ຖ້າທ່ານຕ້ອງສົ່ງຂໍ້ມູນໄປຫາທີ່ສຳນັກງານ, ທ່ານນັ້ນຈະໃຊ້ open()
ແລະ send()
ວິທີ:
xhttp.open("GET", "ajax_info.txt", true); xhttp.send();
ການໃຊ້ | ການອະທິບາຍ |
---|---|
open(method, url, async) |
ກົດລະບຽບຮູບແບບການສະເໜີ
|
send() | ສົ່ງຂໍ້ມູນໄປຫາທີ່ສຳນັກງານ (ສຳນັກງານ GET) |
send(string) | ສົ່ງຂໍ້ມູນໄປຫາທີ່ສຳນັກງານ (ສຳນັກງານ POST) |
GET ຫຼື POST?
GET ມີຄວາມງ່າຍ ແລະ ບໍ່ຫຼາຍຫຼາຍກວ່າ POST, ສາມາດໃຊ້ໃນການຫຼາຍຫຼາຍຄັ້ງ.
ແຕ່ພຽງແຕ່ກະຈາຍ POST ໃນການທີ່ກ່າວຫຼັງນັ້ນ:
- ສາຍການເບິ່ງບັນນາທິດບໍ່ໄດ້ເປັນການເລືອກ (ການປັບປຸງບັນນາທິດ ຫຼື ຖານຂໍ້ມູນໃນທີ່ສຳນັກງານ)
- ສົ່ງຂໍ້ມູນຫຼາຍຫາຍໃຫ້ໃຫ້ທີ່ສຳນັກງານ (POST ບໍ່ມີຄວາມຄຸມຂະໜາດ)
- ສົ່ງຂໍ້ມູນທີ່ນັກບັນທຶກ (ສາມາດມີຄວັນຊັກຄັບ) POST ມີພະລັງແຮງຫຼາຍ ແລະ ປອດໄພຫຼາຍກວ່າ GET
ການສະເໜີ GET
ການສະເໜີ GET ເດີມຄວາມ:
ຄວາມນັບເຄົາ
xhttp.open("GET", "demo_get.asp", true); xhttp.send();
ໃນຄຳນວຍຄວາມທີ່ກ່າວກ່ອນ, ທ່ານອາດຄົບຄອບຄັບພົບຜົນຮັບຄະແນນຮອງ. ເພື່ອຫຼີກລ່ຽງຄວາມດັ່ງກ່າວ, ກະຈາຍ ID ທີ່ມີຄວາມຈິງພຽງຢູ່ URL:
ຄວາມນັບເຄົາ
xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true); xhttp.send();
ຖ້າທ່ານຕ້ອງສົ່ງຂໍ້ມູນທີ່ GET, ກະຈາຍເຂົ້າຄູ່ມູນດັ່ງກ່າວໃນ URL:
ຄວາມນັບເຄົາ
xhttp.open("GET", "demo_get2.asp?fname=Bill&lname=Gates", true); xhttp.send();
ການສະເໜີ POST
ການສະເໜີ POST ເດີມຄວາມ:
ຄວາມນັບເຄົາ
xhttp.open("POST", "demo_post.asp", true); xhttp.send();
ຖ້າທ່ານຕ້ອງ POST ຂໍ້ມູນເປັນຮູບແບບ HTML ຟອມ, ກະຈາຍ setRequestHeader()
ເພີ່ມ HTTP ເປັນຫົວ. ກະຈາຍ send()
ກົດລະບຽບວ່າທີ່ທ່ານຕ້ອງສົ່ງຂໍ້ມູນ:
ຄວາມນັບເຄົາ
xhttp.open("POST", "ajax_test.asp", true); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send("fname=Bill&lname=Gates");
ການໃຊ້ | ການອະທິບາຍ |
---|---|
setRequestHeader(header, value) |
ການເພີ່ມຫົວຂໍ້ HTTP ກັບຂໍ້ມູນຂໍ້ມູນ
|
url - ບັນດາເອກະສານທີ່ຢູ່ທີ່ຜູ້ບໍລິຫານ
ການໃຊ້ open() url ຄວາມຕ້ອງການຕ້ອງໄດ້ກວດສອບ
xhttp.open("GET", "ajax_test.asp", true);
ບັນດາເອກະສານສາມາດເປັນແບບໃດກໍ່ໄດ້ທີ່ .txt ແລະ .xml ຫຼື ບັນດາເອກະສານຫົວໜ້າຜູ້ບໍລິຫານ ເຊັ່ນ .asp ແລະ .php (ພວກມັນສາມາດດຳເນີນການໃນຜູ້ບໍລິຫານກ່ອນຈະຖືກສົ່ງຄຳຕອບຄັດໃຫ້)
ບໍ່ຕ້ອງລໍຖ້າຄວາມສົມບູນ - true ຫຼື false?
ສຳລັບການສົ່ງຂໍ້ມູນອັດຕະໂນມັດopen()
ຂອງການໃຊ້ async ຄວາມຕ້ອງການຕ້ອງໄດ້ກວດສອບ true
:
xhttp.open("GET", "ajax_test.asp", true);
ການສົ່ງຂໍ້ມູນອັດຕະໂນມັດທີ່ບໍ່ຕ້ອງລໍຖ້າຄວາມສົມບູນຈາກຜູ້ບໍລິຫານແມ່ນຄວາມກ້າວໜ້າຫຼາຍຫຼາຍສຳລັບນັກພັດທະນາເວັບໄຊ
ຜ່ານການສົ່ງຂໍ້ມູນອັດຕະໂນມັດທີ່ບໍ່ຕ້ອງລໍຖ້າຄວາມສົມບູນຈາກຜູ້ບໍລິຫານ
- ຈະດຳເນີນການສັນຍານອື່ນໆໃນຂະນະທີ່ພະເຊີນຢູ່ການຄວາມສົມບູນຈາກຜູ້ບໍລິຫານ
- ຈະປະຕິບັດຄວາມສົມບູນເມື່ອມີຄວາມສົມບູນ
onreadystatechange
ຜ່ານ XMLHttpRequest ທີ່ທ່ານສາມາດກໍານົດການຈະປະຕິບັດພວກມັນເມື່ອການຂໍຂໍ້ມູນຮັບຄວາມສົມບູນ
ການຈະປະຕິບັດພວກມັນແມ່ນພາຍໃນ XMLHttpResponse onreadystatechange
ບັນດານະໂຍບາຍທີ່ກໍານົດໄວ້:
ຄວາມນັບເຄົາ
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();
ທ່ານຈະສຶກສາຫຼາຍກ່ຽວກັບ onreadystatechange ໃນຫຼັກວັດທະນະທີ່ຕໍ່ມາ
ການຂໍຂໍ້ມູນສະພາບນິວັນຈັນ
ສຳລັບການດຳເນີນການຂໍຂໍ້ມູນສະພາບນິວັນຈັນ open()
ການກວດສອບສະເພາະຂອງຫົວຫຼັກ false
:
xhttp.open("GET", "ajax_info.txt", false);
ບາງຄັ້ງ async = false ໃຊ້ເພື່ອການທົດລອງທີ່ວ່າຄືນ. ພວກເຈົ້າຈະພົບການສະເໝີທີ່ເປັນການສະເໝີທີ່ສະໄໝນີ້.
ຍ້ອນວ່າລະບຽບຈະລໍຖ້າຈົນກວ່າຜູ້ບໍລິຫານໄດ້ຮັບຄຳຕອບ ບໍ່ຕ້ອງມີຫົວຫຼັກ onreadystatechange:
ຄວາມນັບເຄົາ
xhttp.open("GET", "ajax_info.txt", false); xhttp.send(); document.getElementById("demo").innerHTML = xhttp.responseText;
ພວກເຮົາບໍ່ອະນຸຍາດ XMLHttpRequst (async = false) ຍ້ອນ JavaScript ຈະຢຸດການດຳເນີນຈົນກວ່າຜູ້ບໍລິຫານໄດ້ຮັບຄຳຕອບ. ຖ້າຜູ້ບໍລິຫານຫຼາຍຫຼືຫຼີກຫຼາຍ ຄອັງຄາບຈະຢຸດການດຳເນີນຫຼືຢຸດການດຳເນີນ.
XMLHttpRequest ທີ່ສະເໝີແມ່ນກຳລັງຖືກເພີກຖອນຈາກມາດຕະຖານວຽກໄອ້ພີມ ແຕ່ຂະບວນການນີ້ອາດຈະຕ້ອງຫຼາຍປີ.
ອຸປະກອນພັດທະນາສະໄໝນີ້ ໄດ້ຮັບການກະຕຸ້ນທີ່ຈະແຈ້ງເຕືອນການນໍາໃຊ້ຂໍ້ສານການຮັບຮອງທີ່ເປັນການສະເໝີ ແລະ ເມື່ອມັນເກີດຂຶ້ນ ອາດປະກອບຂຶ້ນຂໍ້ບັນຫາ InvalidAccessError.
- ຫົວທາງເບິ່ງຫຼັງ AJAX XMLHttp
- ຫົວທາງເບິ່ງຕໍ່ໄປ AJAX ການຕອບຕາມ