ບັນດາຫົວອົງ XMLHttpRequest

XMLHttpRequest ໂອຍເກວນສະບາຍສະໜອງວິທີການສຳພັດກັບທະນາຄານຫຼັງຈາກການເລີ່ມອອກເວັບໄຊ.

ຫຍັງ XMLHttpRequest ໂອຍເກວນສະບາຍ?

XMLHttpRequest ໂອຍເກວນສະບາຍຄວາມຝັນຂອງນັກພັດທະນາ.ຍ້ອນວ່າ ພວກເຮົາສາມາດ:

  • ປັບສະແດງບູບຫຼັງຈາກບູບໄດ້ອອກສຽງຂອງບູບບໍ່ອອກສຽງອີກ.
  • ຮັບຂໍ້ມູນຈາກບູບຫຼັງຈາກບູບໄດ້ອອກສຽງ.
  • ຮັບຂໍ້ມູນຈາກບູບຫຼັງຈາກບູບໄດ້ອອກສຽງ.
  • ສົ່ງຂໍ້ມູນໄປຫາບູບດ້ວຍທາງຫຼັງການ.

ທຸກເຄື່ອງຫຼິ້ນໃໝ່ທັງໝົດສາມາດສະໜັບສະໜູນ XMLHTTP ໂອລເຈັກ.

ຄວາມຄິດເຫັນ:ສຳລັບການສັງເກດ XML HTTP ກັບບູບທີ່ຖືກກວດສອບ..

ສ້າງ XMLHTTP ໂອລເຈັກ

ພຽງແຕ່ການຂຽນ JavaScript ຄົນດຽວຫຼັງຈາກນັ້ນພວກເຮົາສາມາດສ້າງ XMLHTTP ໂອລເຈັກ.

ໃນທຸກເຄື່ອງຫຼິ້ນໃໝ່ (ເຄື່ອງຫຼິ້ນ IE 7 ກວ່າ):

xmlhttp=new XMLHttpRequest();

ໃນ Internet Explorer 5 ແລະ 6:

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

ຄວາມຄິດເຫັນ:

<script type="text/javascript">
var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
  {// ການຂຽນສຳລັບທຸກເຄື່ອງຫຼິ້ນໃໝ່}
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {// ການຂຽນສຳລັບ IE5 ແລະ IE6}
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if (xmlhttp!=null)
  {
  xmlhttp.onreadystatechange=state_Change;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
  }
else
  {
  alert("Your browser does not support XMLHTTP.");
  }
}
function state_Change()
{
if (xmlhttp.readyState==4)
  {// 4 = "loaded"}
  if (xmlhttp.status==200)
    {// 200 = OK}
    // ...ການຂຽນຂອງພວກເຮົາຢູ່ນັບນັ້ນ...
    }
  else
    {
    alert("ຄວາມຜິດພາດໃນການເກັບຂໍ້ມູນ XML");
    }
  }
}
</script>

TIY

ຄວາມຄິດເຫັນ:onreadystatechange ແມ່ນຜູ້ຄຸມເຫດການ。ຄຸນຂອງມັນ (state_Change) ແມ່ນຊື່ຂອງການຫຼິ້ນປະຕິບັດຫຼັງຈາກ XMLHTTP ໂອລເຈັກຂອງມັນໄດ້ປ່ຽນສະຖານະສະຖານ. ສະຖານະຈາກ 0 (uninitialized) ຫາ 4 (complete) ກວມເອົາ. ພຽງແຕ່ໃນສະຖານະ 4 ພວກເຮົາຈະເຮັດການ.

为什么使用 Async=true ?

我们的实例在 open() 的第三个参数中使用了 "true"。

该参数规定请求是否异步处理。

True 表示脚本会在 send() 方法之后继续执行,而不等待来自服务器的响应。

onreadystatechange 事件使代码复杂化了。但是这是在没有得到服务器响应的情况下,防止代码停止的最安全的方法。

通过把该参数设置为 "false",可以省去额外的 onreadystatechange 代码。如果在请求失败时是否执行其余的代码无关紧要,那么可以使用这个参数。

TIY

更多实例

通过 XML HTTP 把一个 textfile 载入一个 div 元素中

通过 XML HTTP 进行 HEAD 请求

通过 XML HTTP 进行指定的 HEAD 请求

通过 XML HTTP 列出 XML 文件中的数据

XML / ASP

您也可以把 XML 文档打开并发送到服务器上的 ASP 页面,分析此请求,然后传回结果。

<html>
<body>
<script type="text/javascript">
xmlHttp=null;
if (window.XMLHttpRequest)
  //{ code for IE7, Firefox, Opera, etc.
  xmlHttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  //{ code for IE6, IE5
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if (xmlHttp!=null)
  {
  xmlHttp.open("GET", "note.xml", false);
  xmlHttp.send(null);
  xmlDoc=xmlHttp.responseText;
  xmlHttp.open("POST", "demo_dom_http.asp", false);
  xmlHttp.send(xmlDoc);
  document.write(xmlHttp.responseText);
  }
else
  {
  alert("Your browser does not support XMLHTTP.");
  }
</script>
</body>
</html>

ASP ເວັບໄຊ, ຂຽນໂດຍ VBScript:

<%
set xmldoc = Server.CreateObject("Microsoft.XMLDOM")
xmldoc.async=false
xmldoc.load(request)
for each x in xmldoc.documentElement.childNodes
   if x.NodeName = "to" then name=x.text
next
response.write(name)
%>

ຜ່ານການນຳໃຊ້ response.write ພະຍາຍາມຕົວຫາບູຊີເລີ້ທີ່ຢູ່ທີ່ຄວາມສົມທອງ.

TIY

XMLHttpRequest ໂອອລເຈັກຕົວ ແມ່ນສະເພາະສັບສຳລັບ W3C ບໍ່?

ບໍ່ມີການແນະນຳຂອງ W3C ທີ່ກ່ຽວກັບ XMLHttpRequest ໂອອລເຈັກຕົວ.

ແຕ່, "Load and Save" ຂອງ W3C DOM Level 3 ບັນຈຸບັນທຶກບາງພາກສ່ວນທີ່ຄ້າຍຄືກັນຫນັງບາງການປະຕິບັດ, ແຕ່ບໍ່ມີບູຊີເລີ້ທີ່ບັນຈຸບັນທຶກພວກມັນ.

ບັນທຶກ

XML DOM ການປຶກສາ: XMLHttpRequest ໂອອລເຈັກຕົວ