Tengeneza XMLHttpRequest

XMLHttpRequest 对象提供了在网页加载后与服务器进行通信的方法。

什么是 XMLHttpRequest 对象?

XMLHttpRequest 对象是Mlimani wa wasomi, kwa sababu tunaweza:

  • Kuendeleza ukurasa bila kushikilia ukurasa
  • Kutumia data kutoka kwa mawasiliano ya mbali mbali baada ya kushikilia ukurasa
  • Kutumia data kutoka kwa mawasiliano ya mbali mbali baada ya kushikilia ukurasa
  • Kutuma data kwa mawasiliano ya mbali mbali

Barabara zote za mtaani zinaongea kwa XMLHttpRequest.

Mfano:Kwenye ujumbe wa haraka kwa sababu ya XML HTTP.

Kuzia kuzungumza na XMLHttpRequest

Kwa njia ya kipindi kimoja cha JavaScript, tunaweza kuzia kuzungumza na XMLHttpRequest kwa sababu ya kumekadiri.

Katika barabara mpya zote (kuzingatia IE 7):

xmlhttp=new XMLHttpRequest()

Katika Internet Explorer 5 na 6:

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

Mfano

<script type="text/javascript">
var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
  {// code for all new browsers}
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {// code for IE5 and 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}
    // ...nakuzungumza kwa programu hii...
    }
  else
    {
    alert("Nenda kusomola data ya XML");
    }
  }
}

TIY

Mbinu:onreadystatechange niwezesha kwa matukio. Jina lake (state_Change) ni jina la programu, ambao huitwa kwa sababu ya kutokea uharibifu wa hali ya XMLHttpRequest kwa sababu ya uharibifu wa hali kutoka 0 (haishughuliwa) hadi 4 (kamilifu). Hapita kama hali ni 4, tumekuwa kufanya kazi.

Kwa nini kutumia Async=true?

Mfano wetu una tumia "true" katika kiwango cha tatu cha open().

Parameter hii inaeleza kama anafanyika kwa kina ya pengine.

True inaeleza kwamba skripti haitakaeitwa baada ya kufanya kipendekezo cha send().

Tukifanya kuzingatia kwa sababu kipindi cha onreadystatechange kinahatarisha kipindi cha programu. Kama hii ni nafasi inayohatarisha kufikia mawasiliano ya mtaalamu, hii ni mtu wa kumtaka kusafirisha.

Kuweka parameter kama "false" inafaa kumaliza kwa kipindi cha kipindi cha onreadystatechange. Kama inahitajika kufanya mambo ya kuzingatia baada ya kufaiwa kipendekezo, inafaa kutumia parameter hii.

TIY

Mafanikio mengi

Tunafanya kusoma faili ya textfile kwa kutumia div element

Tunafanya kufanya kipendekezo cha HEAD kwa kutumia XML HTTP

Tunafanya kufanya kipendekezo cha HEAD kwa kutumia XML HTTP

Tunafanya kusoma data ya faili ya XML kwa kutumia XML HTTP

XML / ASP

Wewe wengiweka uharibika na uwanisha hali ya XML katika ukurasa wa ASP wa mtaalamu, tafuta juzuko hii, kisha kuwaisha mambo.

<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.");
  }


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 对象。

不过,W3C DOM Level 3 的 "Load and Save" 规范包含了一些相似的功能性,但是还没有任何浏览器实现它们。

Tazama

Mfano wa XML DOM: Mfano wa XMLHttpRequest