السلام عليكم
لدي سكريبت تحديث بيانات صفحة
استعمل فيها دالة setInterval الدالة تعمل في الفاير فوكس و غيره ماعدى Internet Explorer
يعني الصفحة لا تحدث
هل توجد دالة أخرى من غير setInterval و setTimeout
شكرا
السلام عليكم
لدي سكريبت تحديث بيانات صفحة
استعمل فيها دالة setInterval الدالة تعمل في الفاير فوكس و غيره ماعدى Internet Explorer
يعني الصفحة لا تحدث
هل توجد دالة أخرى من غير setInterval و setTimeout
شكرا
وعليكم السلام ،
setTimeout تعمل على أي متصفح حسب علمي ( و أظن حتى setInterval تعمل على الجميع ) ، المشكلة قد تكون بمكان آخر .
هذا مثال بسيط ، جربته على IE و Chrome وهو يعمل بلا مشاكل .
<html>
<head>
<script type='text/javascript'>
var i = 0;
function startCounter()
{
setTimeout(inc,1000);
}
function inc()
{
i++;
document.getElementById('cid').innerHTML = i;
setTimeout(inc,1000);
}
window.onload = startCounter;
</script>
</head>
<body>
<p id="cid">0</p>
</body>
</html>
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
مشاكل تحديث بيانات الصفحة :
- لو تريد تحديث الصفحة بناءا على الكوكيز والسيشن فلابد من :
1- اعادة تحميل الصفحة او الذهاب لصفحة اخرى .
2- لو بتستخدم الاجاكس استدعى الصفحة التى بها العمليات على قاعدة البيانات (صفحة العمليات كلها) داخل الصفحة او داخل id لو يتستخدم جى كويرى
انصحك بأن تسهلها على نفسك وماتصعبهاش . بالتوفيق
شكرا لكما على ردكما
اخي الشمري المثال الدي اعطيتني اياه جربته من قبل
لكنه ليس المطلوب
للتوضيح اكثر ساضع المثال كامل
index.php
<html>
<head>
<script language="javascript">
function jah_switch(url,target)
{
if (document.getElementById(target).innerHTML != '')
{
document.getElementById(target).innerHTML = '';
}
else
{
jah(url,target);
}
}
function Switch(url,target) {
// native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = function() {jahDone(target);};
req.open("GET", url, true);
req.send(null);
// IE/Windows ActiveX version
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = function() {jahDone(target);};
req.open("GET", url, true);
req.send();
}
}
}
function jahDone(target) {
// only if req is "loaded"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
results = req.responseText;
document.getElementById(target).innerHTML = results;
} else {
document.getElementById(target).innerHTML="خطأ:\n" +
req.statusText;
}
}
}
</script>
</head>
<body>
<?
require('db_connect.php');
echo '<div id="photo_show">';
$get_phos = @mysql_query("SELECT `id`, `title`, `url` FROM `photo` ORDER BY RAND() LIMIT 1");
$phos = @mysql_fetch_array($get_phos);
echo '<img width="200" src="'.$phos['url'].'" alt="'.$phos['title'].'" />';
echo '</div>';
echo "<script>setInterval('Switch(\'showshow.php\', \'photo_show\');', 10000);</script>";
?>
</body>
</html>و الصفحة التي اقوم بجلبها
showshow.php
<?
require('db_connect.php');
$get_phos = @mysql_query("SELECT `id`, `title`, `url` FROM `photo` ORDER BY RAND() LIMIT 1");
while($phos = @mysql_fetch_array($get_phos))
{
echo '<img width="200" src="'.$phos['url'].'" alt="'.$phos['title'].'" />';
}
?>قاعدة البيانات
CREATE TABLE `photo` ( `id` int(10) unsigned NOT NULL auto_increment, `title` varchar(85) NOT NULL default '', `url` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM;
السكريبت يعمل في كل المتصفحات بشكل جيد ما عدا متصفح الانترنت ايكسبلور
اين الخطأ او مادا يلزم تغييره او تبديله
ممكن مساعدة
جزاكم الله خيرا
:happy: :unsure:
جرب استبدال
هذه
echo "<script>setInterval('Switch(\'showshow.php\', \'photo_show\');', 10000);</script>";بهذه
echo "<script>setInterval(function(){ Switch('showshow.php', 'photo_show');}, 10000);</script>";اشكرك على مساعدتك
لكن الفكرة لم تنجح
لا يعمل في الانترنت ايكسبلور :unsure:
السلام عليكم ورحمة الله
بحسب الكود الموجود لم أجد أي مشكلة قد تمنع الدالة setInterval من العمل (و هي عموماً تعمل على جميع المتصفحات)
قد تكون المشكلة في استخدام الـ IE لـ Cached version من المحتوى عند ثاني استدعاء لدالة الـ Ajax
أي أنه لا يقوم بتنفيذ الـ ajax call بشكل فعلي و إنما يقوم بعرض المحتوى من الـ Cache
جرب زيادة مدة الـ setInterval و افراغ الـ Cache الخاصة بالمتصفح اثناء مرور هذا الوقت
إن تغير المحتوى بعد تفريغ الـ Cache فعليك محاولة تعطيل تخزين محتوى هذه الصفحة في الـ Cache
بتوفيق الله...
تم تعديل هذه المشاركة بواسطة MoHaMMaD Pro في 2 ديسمبر 2010 في 02:16
Everything will be fine when we TALK LESS, DO MORE
نعم المشكل في الكاش لا يقزم بمسح الكاش في الانترنت ايكسبلور
لقد اختلطت عليا الامور سبق لي و نبهت في موضوع في منتدى اخر لهده المشكلة
المهم كيف امسح الكاش
لقد جربت حدف الكاش بالطريقة اليدوية و تم تحديث الصفحة و البيانات المدخلة بالاجاكس
يا ريت لو تساعدني
شكرا
جرب اضافة الـ meta tag الخاصة بمنع الحفظ في الـ Cache
كهذه :
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
راجع هذا الرابط : http://www.i18nguy.com/markup/metatags.html
بتوفيق الله...
Everything will be fine when we TALK LESS, DO MORE
شكرا لك
الفكرة تعمل في موقع و لا تعمل في موقع اخر
يعني ان هناك دالة غير مفعلة في استضافة الموقع الدي لم تعمل الفكرة فيه
ما هي هده الدالة يا ترى
يمكن تعرفها
شكرا