دستورات این تابع چیست ؟

این تابع را خودمان می نویسیم

در این تابع چه دستوراتی نوشته می شو د؟

 

پاسخ :

در تمام فصلهای اموزش xml dom ما از فایل books.xml استفاده می کنیم

اما دستورا ت برنامه مان را در یک فایل html می نویسیم

 

حالا چطور فایل html ما به فایل books.xml دسترسی داشته باشد ؟

برای این کار دستوراتی را در تابع loadxmldoc می نویسیم

 

که این دستورات کار بار گذاری فایل books.xml را انجام می دهند

 

 

حالا من دستورات تابع را اینجا قرار داده ام و بعد انرا را خط به خط توضیح می دهم :

 

function loadXMLDoc(dname)


{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

 

xhttp.open("GET",dname,false);
xhttp.send();
return xhttp.responseXML;


}

 توجه کنید برای تعریف این تابع از دستورات جاوا اسکریپت استفاده شده است

 خط اول :

function loadXMLDoc(dname)

 

تعریف تابعی به نام loadxmldoc

این تعریف یک پارامتر به نام dname دارد

در زمان فراوخوانی این تابع ، نام فایل xml ای که می خواهیم بار گذاری شود و برنامه html ما به ان متصل شود را برایش ارسال می کنیم 

 مثلا شما در تمام فصلهای اموزش xml dom با این دستور زیاد مواجه می شوید :

 

xmlDoc=loadXMLDoc("books.xml");

 

این یعنی فایل books.xml را بار گذاری کن و اشاره گری به نام xmldoc به این فایل اشاره کند

کسانیکه زیاد با فایلها کار کرده اند می دانند برای اتصال به یک فایل در برنامه ، نیاز به یک اشاره گر فایل داریم

 
 

 خط دوم :

  if (window.XMLHttpRequest)

 

شرط درون پرانتز یعنی : اگر مرورگر کاربر از نوع غیر از IE بود ، انگاه دستور درون if اجرا می شود

 خط سوم :

  xhttp=new XMLHttpRequest();

دستور درون  if است ، یک شی از نوع XMLHttpRequest می سازد و نام این شی xhttp می باشد

از این شی برای اتصال به محل ذخیره  فایل xml مورد نظر  و دریافت و اتصال به ان استفاده می کنیم

 

 خط چهارم :

else

در غیر این صورت . یعنی اگر مرورگر کاربر از نوع IE ( یعنی اگر کاربر صفحه وب ما را از طریق مرورگر IE میبیند ) انگاه دستورات else اجرا شود

 خط پنجم :

 

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

دستور درون else است ، یک شی از نوع ActiveXObject می سازد و نام این شی xhttp می باشد

از این شی برای اتصال به محل ذخیره  فایل xml مورد نظر  و دریافت و اتصال به ان استفاده می کنیم

 

 خط ششم :

xhttp.open("GET",dname,false);

( در مورد get و post در فصل های مربوط به xslt کاملا توضیح داده شده است )

ارسال تقاضا به محل ذخیره فایل xml ، برای اتصال به فایلی که نام ان در dname قرار دارد

false یعنی اگر اتصال به این فایل دچار مشکل شده معطل اتصال به این فایل نمان و بقیه دستورات را انجام بده چون اگر معطل بمانیم صفحه وب ما قفل می کند یعنی باقی دستورات صفحه انجام نمی شوند

 

 خط هفتم :

xhttp.send();

ارسال تقاضا ی اتصال به فایل xml مورد نظر به محل ذخیره این فایل

 خط هشتم :

return xhttp.responseXML;

باز گرداندن اتصال به فایل xml مورد نظر به محل فراخوانی تابع loadxmldoc

 
دستورات این تابع را در کدام قسمت برنامه بنویسیم ؟
 شما دو کار می توانید انجام دهید :
 روش اول :

 روش اول همانند کاری است که سایت http://www.w3schools.com انجام داده است

و من دارم این سایت را ترجمه می کنم

 

این سایت ، یک فایل در notepad ایجاد کرده

و نام تابع و دستورات انرا که در ناحیه خاکستری بالا مشاهده کردید بدون هیچ تگ کم و اضافه ای در ان قرار داده و انرا با پسوند js ( یعنی فایل جاوا اسکریپت خارجی ) و نام دلخواه loadxmldoc در محل ذخیره برنامه وبمان ذخیره کرده است

 

بعد برنامه را در یک فایل notepad دیگر نوشته است

و در قسمت head ان یک پیوند به این فایل جاوااسکریپت خارجی برقرار کرده

از این به بعد می تواند بدون شلوغ شدن محیط برنامه نویسی ، از توابعی که در این فایل خارجی قرار داده استفاده کند

 دستورات درون head را در قسمت پائین می نویسم :

 

<html>
<head>


<script src="loadxmldoc.js"> </script>


</head>

 

<body>


</body>
</html>

 
  روش دوم:

 در همان فایل notepad ای  که دارید  برنامه تان را می نویسید و انرا با پسوند html ذخیره می کنید ، درون تگ head تگ script را باز کرده  و دستورات تابع را در ان کپی نمائید

 

فرق این با روش قبلی در این است که در این روش محیط برنامه نویسیتان را بیخودی شلوغ کرده اید

 

<html>
<head>


<script >

 

function loadXMLDoc(dname)


{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

 

xhttp.open("GET",dname,false);
xhttp.send();
return xhttp.responseXML;


}

 

 

</script>


</head>

 

<body>


</body>
</html>