एक्सएमएलआरएक्स ऑब्जैक्ट

XMLHttpRequest ऑब्जेक्ट ने वेब पृष्ठ लोड होने के बाद सर्वर से संचार करने के तरीके प्रदान करता है。

XMLHttpRequest ऑब्जेक्ट क्या है?

XMLHttpRequest ऑब्जेक्ट हैडेवलपर के सपनाक्योंकि आप कर सकते हैं:

  • पृष्ठ को फिर से लोड किए बिना वेबपेज को अपडेट करना
  • पृष्ठ लोड होने के बाद सर्वर से डाटा अनुरोध करना
  • पृष्ठ लोड होने के बाद सर्वर से डाटा प्राप्त करना
  • बैकग्राउंड में सर्वर को डाटा भेजना

सभी आधुनिक ब्राउज़र XMLHttpRequest ऑब्जैक्ट का समर्थन करते हैं।

उदाहरण:टेक्स्ट टाइप करते समय सर्वर से XML HTTP संचार.

XMLHttpRequest ऑब्जैक्ट बनाना

एक साधारण JavaScript कोड से, हम XMLHttpRequest ऑब्जैक्ट को बना सकते हैं।

सभी आधुनिक ब्राउज़रों में (इंटरनेट एक्सप्लोरर 7 सहित):

xmlhttp=new XMLHttpRequest()

इंटरनेट एक्सप्लोरर 5 और 6 में:

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

उदाहरण

<script type="text/javascript">
var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
  {// सभी नए ब्राउज़रों के लिए कोड}
  xmlhttp=new XMLHttpRequest();
  }
अन्यथा 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);
  }
अन्यथा
  {
  alert("आपका ब्राउज़र XMLHTTP का समर्थन नहीं करता");
  }
}
function state_Change()
{
if (xmlhttp.readyState==4)
  {// 4 = "loaded"}
  if (xmlhttp.status==200)
    {// 200 = OK}
    // ...हमारा कोड यहाँ...
    }
  अन्यथा
    {
    alert("XML डाटा प्राप्त करने में समस्या");
    }
  }
}
</script>

TIY

टिप्पणी:onreadystatechange एक इवेंट हैंडलर है। इसका मूल्य (state_Change) एक फ़ंक्शन का नाम है, जब XMLHttpRequest ऑब्जैक्ट की स्थिति बदलती है, तो इस फ़ंक्शन को ट्रिगर किया जाता है। स्थिति 0 (uninitialized) से 4 (complete) तक बदलती है। केवल स्थिति 4 पर ही हम कोड कार्य करते हैं।

असिंक्रोनस=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();
  }
अन्यथा 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);
  }
अन्यथा
  {
  alert("आपका ब्राउज़र XMLHTTP का समर्थन नहीं करता");
  }
</script>
</body>
</html>

ASP पृष्ठ, VBScript से लिखा गया:

<%
set xmldoc = Server.CreateObject("Microsoft.XMLDOM")
xmldoc.async=false
xmldoc.load(request)
xmldoc.documentElement.childNodes में x के लिए हर एक
   यदि x.NodeName = "to" तो name=x.text
अगला
response.write(name)
%>

response.write गुण का उपयोग करके परिणाम को क्लायंट को वापस भेजें।

TIY

XMLHttpRequest वस्तु W3C का मानक है क्या?

कोई W3C अनुमोदित मानक XMLHttpRequest वस्तु को निर्दिष्ट नहीं किया गया है。

हालांकि, W3C DOM Level 3 का "लोड और सेवे" नियमावली कुछ समान कार्यकारी फ़ंक्शनों को शामिल करती है, लेकिन इसे कोई ब्राउज़र नहीं लागू करता है。

देखें

XML DOM संदर्भ मैनुअल: XMLHttpRequest वस्तु