شیء XMLHttpRequest

مفهوم XMLHttpRequest يقدم طرقًا للتواصل مع الخادم بعد تحميل صفحة الويب.

ما هو XMLHttpRequest؟

مفهوم XMLHttpRequest هوحلم المطورين، لأنك تستطيع:

  • تحديث الصفحة دون إعادة تحميل الصفحة
  • طلب بيانات من الخادم بعد تحميل الصفحة
  • استقبال بيانات من الخادم بعد تحميل الصفحة
  • إرسال بيانات إلى الخادم في الخلفية

جميع المتصفحات الحديثة تدعم XMLHttpRequest.

مثال:إجراء اتصال XML HTTP مع الخادم عند إدخال النص.

إنشاء XMLHttpRequest

يمكننا إنشاء XMLHttpRequest باستخدام سطر JavaScript بسيط.

في جميع المتصفحات الحديثة (بما في ذلك 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)
  {// code for all new browsers}
  xmlhttp=new XMLHttpRequest();
  تحذير("Your browser does not support XMLHTTP.");
else if (window.ActiveXObject)
  {// code for IE5 and IE6}
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  تحذير("Your browser does not support XMLHTTP.");
if (xmlhttp!=null)
  {
  xmlhttp.onreadystatechange=state_Change;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
  تحذير("Your browser does not support XMLHTTP.");
else
  {
  alert("Your browser does not support XMLHTTP.");
  تحذير("Your browser does not support XMLHTTP.");
تحذير("Your browser does not support XMLHTTP.");
function state_Change()
{
if (xmlhttp.readyState==4)
  {// 4 = "loaded"}
  if (xmlhttp.status==200)
    {// 200 = OK}
    // ...code here...
    تحذير("Your browser does not support XMLHTTP.");
  else
    {
    alert("Problem retrieving XML data");
    تحذير("Your browser does not support XMLHTTP.");
  تحذير("Your browser does not support XMLHTTP.");
تحذير("Your browser does not support XMLHTTP.");
}

من خلال استخدام خاصية response.write لتحويل النتائج إلى العميل.

التعليقات:onreadystatechange هو معالج أحداث. قيمته (state_Change) هي اسم دالة، يتم تنفيذها عند تغيير حالة XMLHttpRequest عند تغيير حالة XMLHttpRequest. تتغير الحالة من 0 (غير معرف) إلى 4 (مكتملة). يتم تنفيذ الكود فقط عند الحالة 4.

لماذا نستخدم Async=true؟

استخدمنا "true" في الثالثة parameter في open().

يحدد هذا المعامل ما إذا كان الطلب يتم معالجته بشكل متسلسل أم لا.

True يعني أن السكربت سيستمر في التنفيذ بعد طريقة send()، دون الانتظار لاستجابة من الخادم.

يؤدي الحدث onreadystatechange إلى تعقيد الكود. ولكن هذا هو أكثر الطرق أمانًا للتحقق من عدم توقف الكود عند عدم تلقي استجابة من الخادم.

بإعداد هذا المعامل إلى "false"، يمكنك تجنب الكود الإضافي onreadystatechange. إذا كانت مهمة تنفيذ الكود الأخر غير مهمة عند فشل الطلب، يمكنك استخدام هذا المعامل.

من خلال استخدام خاصية response.write لتحويل النتائج إلى العميل.

مزيد من الأمثلة

تحميل ملف textfile في عنصر div باستخدام XML HTTP

إجراء طلب HEAD باستخدام XML HTTP

إجراء طلب HEAD محدد باستخدام XML HTTP

إدراج بيانات ملف XML باستخدام XML HTTP

XML / ASP

يمكنك أيضًا فتح ملف XML并发رسله إلى صفحة ASP على الخادم، تحليل هذا الطلب، ثم إرجاع النتيجة.

<html>
<body>
<script type="text/javascript">
xmlHttp=null;
if (window.XMLHttpRequest)
  //{ code for IE7, Firefox, Opera, etc.
  xmlHttp=new XMLHttpRequest();
  تحذير("Your browser does not support XMLHTTP.");
else if (window.ActiveXObject)
  //{ code for IE6, IE5
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  تحذير("Your browser does not support 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);
  تحذير("Your browser does not support XMLHTTP.");
else
  {
  alert("Your browser does not support XMLHTTP.");
  تحذير("Your browser does not support XMLHTTP.");
}
</script>
</body>

</html>

صفحة ASP، مكتوبة بلغة VBScript:
<%
تعيين xmldoc = Server.CreateObject("Microsoft.XMLDOM")
xmldoc.async=false
xmldoc.load(request)
   للتحقق من كل x في childNodes لـ xmldoc.documentElement
إذا كان x.NodeName = "to" فإن name = x.text
التالي
response.write(name)

%>

من خلال استخدام خاصية response.write لتحويل النتائج إلى العميل.

TIY

هل موضوع XMLHttpRequest هو معيار W3C؟

لم يحدد أي معيار مقترح من W3C موضوع XMLHttpRequest.

على الرغم من ذلك، تتضمن معيار "تحميل وتخزين" لمستوى 3 لـ W3C بعض الوظائف المماثلة، ولكن لم يتم تنفيذها أي من المتصفحات حتى الآن.

انظر