PDA

View Full Version : یه مشکل JSی در IE!!!



MSN_Issue
یک شنبه 17 بهمن 1389, 14:02 عصر
سلام دوستان ...
من برای نمایش اخبار توی سایتم از کد زیر استفاده میکنم (AJAX)


var http = getHTTP();

function answer()
{
if(http.readyState == 4)
{
r = http.responseText;
document.getElementById("news").innerHTML = r ;
}
}

function reciveNews()
{
http.open("GET","news.php");
http.onreadystatechange = answer;
http.send(null);
setTimeout("reciveNews()", 1000*7);
}

function getHTTP()
{
var xmlhttp;
try{ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e)
{
try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e2)
{
if(typeof XMLHttpRequest != 'undefiend')
{
xmlhttp = new XMLHttpRequest();
}
}
}
return xmlhttp;
}


توی این کد هر 7ثانیه باید یه خبر جدید نمایش داده بشه ... !
توی تمام مرورگر ها درست کار میکنه ، در IE هم بار اول خبر لود میشه اما بعد 7ثانیه عوض نمیشه (اصلا عوض نمیشه !):متفکر:

ممنون میشم کمکم کنید ...

shozdeh
یک شنبه 17 بهمن 1389, 18:19 عصر
سلام
تابع setTimeOut یک بار اجرا میشه . بهتره از تابع setInterval استفاده کنید. تابع اول فقط زمان اجرا رو به تعویق میندازه اما دومی اون تو لوپ دائم تکرار میکنه.

امیدوارم بتونی با این تابع کار کنی !

MSN_Issue
یک شنبه 17 بهمن 1389, 22:15 عصر
خودم مشکل کدم رو فهمیدم اما توی حلش موندم !!!!
مشکل از این خطه :

document.getElementById("news").innerHTML = r ;
این خط توی IE فقط یکبار اجرا میشه !!!

کسی راه حلی داره ؟

hossin.esm
دوشنبه 18 بهمن 1389, 09:28 صبح
یکم سخت بود فهمیدن مشکل
IE صفحه news.php را cache میکنه

برای جلوگیری از cache کردن از کد زیر در فایل news.php استفاده کنید.

header("Cache-Control: no-cache");
header("Pragma: no-cache");

MSN_Issue
دوشنبه 18 بهمن 1389, 10:56 صبح
یکم سخت بود فهمیدن مشکل
IE صفحه news.php را cache میکنه

برای جلوگیری از cache کردن از کد زیر در فایل news.php استفاده کنید.

header("Cache-Control: no-cache");
header("Pragma: no-cache");

WOW
آقا دم شما گرم ... !

eAmin
سه شنبه 19 بهمن 1389, 17:42 عصر
شما می تونستید برای حل این مشکل، زمان جاری سیستم رو به همراه یک کوئری در ادامه url قرار بدید:

http.open("GET","news.php?noCache=" + new Date().getTime());

asif1358
پنج شنبه 12 اسفند 1389, 04:59 صبح
eAmin هم درست میگن ولی بهتره بجای تاریخ از رندوم استفاده شود:

?nocatch=' + Math.random()