تمام موارد ی که در این صفحه می گویم باید درون تابع sw بنویسیم
 
بررسی اینکه ایا سرور به تقاضای ما پاسخ داده است ؟
 

 بعد از اینکه متغیر a را تعریف کردم

حالا باید بررسی کنم که ایا سرور به تقاضای من پاسخ داده یا نه

از وقتی تقاضای من به سرور ارسال میشود تا زمانی که سرور به تقاضای من جواب میدهد رویداد

 onreadystatechange  اتفاق می افتد

 

 

توجه توجه :

رویداد onreadystatechange مربوط به شی XMLHttpRequest  است

 

 

شی XMLHttpRequest  دارای ویژگهایی است که هرگاه رویداد onreadystatechange اتفاق می افتد مقدار هایی درون این ویژگها قرار می گیرد

و من باید از این ویژگیهای  استفاده کنم تا بفهمم که ایا سرور به تقاضای من جواب داده یا نه

اگر جواب درست داده انگاه محتوای تگ div من عوض شود و برابر ان چیزی شود که سرور برای من ارسال کرده است

 
ویژگیهای مهم شی XMLHttpRequest 
 onreadystatechange
با اتفاق افتادن این رویداد که متعلق به شی تقاضا یا همان XMLHttpRequest  است دستورات دورن function اجرا شود 
 
  •  readyState
 

 وضعیت XMLHttpRequest را در خود نگه می دارد

مقدار از از صفر تا 4 متغیر است

0 : تقاضایی از سرور هنوز صورت نگرفته است

1: اتصال به سرور برقرار است

2:تقاضایی دریافت شد

3:پردازش جواب

4: تقاضا تمام شد و پاسخ اماده است

 
 
  •  status

 200 : یعنی ok

404 : صفحه پیدا نشد

 

مهم مهم خیلی مهم :

  زمانیکه readyState  برابر 4  و status  برابر 200 باشد  پاسخ سرور اماده استفاده است

 
دریافت پاسخ تقاضا و عوض کردن محتوای مورد نظر
 

 پس من حالا دستورات دیگری را در تابع sw فایل test.html می نویسم

این دستورات بررسی می کنند که اگر سرور به درستی پایخ تقاضای من را داده است محتوای تگ div که ای دی ان را t1 گذاشته بودم برابر متنی شود که از سرور به برنامه من یعنی همان text.html رسیده است

 این دستورات بصورت زیر هستند :

 

a.onreadystatechange=function()
  {
  if (a.readyState==4 && a.status==200)
    {
    document.getElementById("t1").innerHTML=a.responseText;
    }
  }

 پس برنامه ما تا این مرحله بصورت زیر می شود :
 

 تمام قسمت های دستورات بالا را قبلا گفته ام فقط می ماند دستور زیر :

 

 

    document.getElementById("t1").innerHTML=a.responseText;

 

 که این هم یعنی :

 getElementById("t1") 

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

 innerHTML

یعنی دستورات html ای که دورن تگهایی هستند که نام ای دی انها t1 است

 

 a.responseText

متن ارسال شده از طرف سرور برای فایل test.html

متغیر a هم که همان تقاضای ما بود که به سرور ارسال کرده بودیم

در صورتیکه پاسخ سرور به تقاضای برنامه test.html من ، متنی باشد ان متن در متغیر a پاسخ ویژگی responseText  متغیر a قرار خواهد گرفت

 
دستورات برنامه test.html تا  این لحظه

 

<html>

 

<head>

   <script language="javascript"   type="text/javascript">

          function sw ( ) {

 

             if (window.XMLHttpRequest)
                   {

                         // code for IE7+, Firefox, Chrome, Opera, Safari
                         a=new XMLHttpRequest();
                    }
             else
                   {

                          // code for IE6, IE5
                           a=new ActiveXObject("Microsoft.XMLHTTP");
                    }

 

               a.onreadystatechange=function()
                      {
                              if (a.readyState==4 && a.status==200)
                                   {
                              document.getElementById("t1").innerHTML=a.responseText;
                                    }
                       }

 

 

 

           }

 

</script>

</head>

 

 

<body>

<div id="t1">

  <p> hello </p>

  <h1> goodbye </h1>

</div>

 

<button type="button"   onclick="sw();" > click to change </button>

 

 

</body>

</html>

 
 ادامه .....