مشکل setTimeout در اینترنت اکسپلورر

MIMi King

Member
سلام. من یک سایت دارم که در اون زمان و تاریخ رو از سرور می گیرم، یعنی یه فایل PHP دارم که هر وقت لود میشه زمان و تاریخ سرور رو نشون میده. حالا من تو کد جاواسکریپت با استفاده از AJAX هر 250 میلی ثانیه یه بار این فایل PHP رو لود می کنم و از توش تاریخ و زمان رو می خونم. تا اینجا همه چیز درسته و تو FF و Chrome و Safari هم درست کار می کنه. حالا صفحه رو توی IE که لود می کنم تاریخ و ساعت درسته ولی عوض نمیشه ، یعنی جلو نمیره وایساده. بعد حتی اگه صفحه رو هم رفرش کنم باز هم همون تاریخ و زمان رو میده یعنی من فردا بازهم این صفحه رو باز کنم تاریخ امروز و ساعتی که برای اولین بار صفحه رو باز کردن رو نشون میده!!!! خیلی جالبه.. کدم اینه:

کد:
function updTime() {
    if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 xmlhttp.onreadystatechange=function()
  {if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("div_time").innerHTML = 'Current Server Time:  ' + xmlhttp.responseText;    
}
  }
xmlhttp.open("GET","time.php",true);
xmlhttp.send();
t=setTimeout("updTime()",250);
    }
 

eAmin

Well-Known Member
این مشکل مربوط به کش شدن درخواستهاست که در ie وجود داره. برای حل این مشکل میتونید یک مقدار رندوم به انتهای url مورد نظر اضافه کنید تا از کش شدندرخواستها در Ajax جلوگیری بشه:
کد:
xmlhttp.open("GET","time.php?" + (new Date().getTime()),true);
 

جدیدترین ارسال ها

بالا