ایکس ایم ال ڈی او م آئی اینٹی سکلیپٹ

XMLHttpRequest علامت نے ویب پیج لوڈ کے بعد سروسرو کے ساتھ مواصلات کا طریقہ فراہم کیا ہے。

XMLHttpRequest علامت کیا ہے؟

XMLHttpRequest علامت کا استڈیولپرز کا خواب، کیونکہ آپ اس کے لئے بھی میں سکتے ہیں:

  • صفحه بار نہ ہونے کے حالت میں ویب پیج اپدیت کرنا
  • صفحه بار ہونے کے بعد سرور سے ڈاٹا درخواست کرنا
  • صفحه بار ہونے کے بعد سرور سے ڈاٹا حاصل کرنا
  • در پس منظر سرور کو ڈاٹا ارسال کرنا

تمام جدیدترین بروزروں XMLHttpRequest آئی او بی جی کا تعاون دیتے ہیں۔

مثال:متن تایپ کرتے وقت سرور کے ساتھ XML HTTP مواصلات میں آئیں.

XMLHttpRequest آئی او بی جی بنانا

یک خط ساده JavaScript کے ذریعے، XMLHttpRequest آئی او بی جی بنایا جاسکتا ہے۔

در تمام جدیدترین بروزروں (شامل IE 7):

xmlhttp=new XMLHttpRequest()

در اینترنت اکسپلورر 5 و 6:

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

مثال

<اسکریپت نوع="تکست/جاوااسکریپت">
var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=null;
اگر (ویندوز.اکٹیوایکسجی)
  {// تمام نئے بروزروں کے لئے کوڈ}
  xmlhttp=new XMLHttpRequest();
  }
درآخر اگر (ویندوز.ایکتیوایکسجی)
  {// IE5 اور IE6 کا کوڈ}
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if (xmlhttp!=null)
  {
  xmlhttp.onreadystatechange=state_Change;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
  }
else
  {
  alert("آپ کا براوزر XMLHTTP کو مستند نہیں کردارتی ہے.");
  }
}
function state_Change()
{
if (xmlhttp.readyState==4)
  {// 4 = "loaded"}
  if (xmlhttp.status==200)
    {// 200 = OK}
    // ...آپ کا کوڈ یہاں...
    }
  else
    {
    alert("XML داده کی بازیابی میں مسئلہ");
    }
  }
}
</script>

TIY

نوٹ:onreadystatechange ایک ایونٹ ہینڈل ہے۔ اس کا مقصد (state_Change) ایک فونکشن کا نام ہے، جب XMLHttpRequest آئی او بی جی کی حالت تبدیل ہوتی ہے تو اس فونکشن کو کال کیا جاتا ہے۔ حالت 0 (uninitialized) سے 4 (complete) تک تبدیل ہوتی ہے۔ صرف حالت 4 میں ہی ہم کوڈ چلاتے ہیں۔

چرا Async=true استعمال کیا جاتا ہے؟

ہمارا مثال اوپن() کے تیسرے پارامتر میں "true" استعمال کرتا ہے۔

یہ پارامتر درخواست کا ایسینک یا نئسینک معاملہ کا تعین کرتا ہے۔

بائیکدھار کا مطلب یہ ہے کہ اسکریپت سنڈ() میتھد کے بعد جاری رہے گا، بغیر سروئئر کی جواب دہی کی منتظر رہنے کی ضرورت نہیں ہوگی۔

onreadystatechange ایوینٹ کو کوڈ پیچید کراتا ہے۔ لیکن یہ بغیر سروئئر کی جواب دہی کے کوڈ کو رکھنا سب سے محفوظ طریقہ ہے۔

اگر آپ اس پارامتر کو "false" رکھتے ہیں تو، اضافی onreadystatechange کد کو چھوڑ سکتے ہیں۔ اگر درخواست کی شکست کے بعد بقیہ کوڈ کو چلانا یا نہ چلانا، آپ کا معاملہ تھا، تو آپ اس پارامتر کو استعمال کرسکتے ہیں۔

TIY

بیشتر مثال

XML HTTP کے ذریعے ایک ٹیکسٹ فائل کو ایک دیویز عناصر میں لوڈ کریں

XML HTTP کے ذریعے HEAD درخواست کا فراہمی

XML HTTP کے ذریعے معین کئے گئے HEAD درخواست کا فراہمی

XML HTTP کے ذریعے XML فائل میں موجود اعداد و شمار درج کریں

XML / ASP

آپ بھی XML دستاویز کو کھول سکتے ہیں اور اس کو سروئئر پر ASP پیج پر بھیج سکتے ہیں، اس درخواست کا تجزیہ کریں، اور نتیجہ برتائیں。

<ہمل>
<بادی>
<اسکریپت نوع="تکست/جاوااسکریپت">
ایکسملایح = نول;
اگر (ویندوز.اکٹیوایکسجی)
  {//کد برای IE7, Firefox, Opera, etc.
  ایکسملایح = نئی اکٹیوایکسجی("Microsoft.XMLHTTP");
  }
درآخر اگر (ویندوز.ایکتیوایکسجی)
  {//کد برای IE6, IE5
  ایکسملایح = نئی اکٹیوایکسجی("Microsoft.XMLHTTP");
  }
اگر (ایکسملایح.نول نہیں)
  {
  ایکسملایح.اوپن("گیٹ", "note.xml", موقتی);
  ایکسملایح.سنڈ(نول);
  ایکسملایح.ریسپونستایکریتنت();
  ایکسملایح.اوپن("پوسٹ", "demo_dom_http.asp", موقتی);
  ایکسملایح.سنڈ(نول);
  دوکیمنت.وایت(ایکسملایح.ریسپونستایکریتنت();
  }
else
  {
  alert("آپ کا براوزر XMLHTTP کو مستند نہیں کردارتی ہے.");
  }
</script>
</body>
</html>

ASP ویب پیج، VBScript سے لکھا گیا:

<%
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 آوٹھا