PDA

View Full Version : تایمر بر عکس



sam166
دوشنبه 25 بهمن 1389, 15:25 عصر
سلام و خسته نباشید من در یک پروژه باید یک تایمر برعکس درست کنم
مثلا از 60 رو به پایین بیاد و بعد زمانی که به صفر رسید یک رکورد از جدول مورد نظررو بخونه و دوباره شروع به شمارش کنه و وقتی دوباره یه صفر رسید رکورد دوم رو بخونه.

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

با تشکر

Javad_Darvish_Amiry
دوشنبه 25 بهمن 1389, 15:48 عصر
سلام خسته نباشید. تایمر مشخصی نمیشناسم که بهتون معرفی کنم. اما خودتون به راحتی میتونید با setTimeout و setInterval بنویسید. یه نمونه ساده:


<html>
<head>
<script type="text/javascript">
var timer = 60;
function tick(){
timer--;
document.getElementById("timershow").innerHTML = timer+"";
if(timer == 0){
// Do your ajax work, and show result everywhere you want, like this:
document.getElementById("resultshow").innerHTML = new Date().toLocaleString();
// Then reset your timer to begin again, like this:
timer = 60;
}
setTimeout("tick()",1000);
}
</script>
</head>
<body onload="tick()">
<span id="timershow"></span>
<div id="resultshow"></div>
</body>
</html>

موفق باشید.

sam166
دوشنبه 25 بهمن 1389, 16:23 عصر
دوست عزیز دستت درد نکه (دستت طلا)
من میخوام زمانی کاربر صفحه رو رفرش کرد تایمر صفر نشه
البته میدونم باید داخل سشن قرارش بدی ولی نمیدونم چه چوری؟
و میخواستم زمانی که صفر شد یک فرایند انجام بشه برای اینکار باید چه کار کنم؟

ممنون

Javad_Darvish_Amiry
دوشنبه 25 بهمن 1389, 20:02 عصر
سلام. خواهش میکنم. چون تایمرتون سمت کلاینت هست، پس از سمت سرور نمیتونید کنترلش کنید. (برای صفر نشدن باید ثانیه های سپری شده رو هر ثانیه ذخیره کنید که برای ذخیره تو سشن باید باید با سرور کانکت شید و این کار در عمل برای سرعت های پایین مثل اینترنت ایران غیر ممکنه -چون نمیشه هر ثانیه یه درخواست به سرور داشت و قبل از این که اون درخواست تکلیفش روشن شه، ثانیه بعدی فرا رسیده؛ بر فرض مثال که سرعت اینترنت هم بالا باشه و دسترسی به همچین کاری امکان پذیر باشه، عاقلانه نیست که ثانیه ای یک درخواست فقط برای ذخیره سازی یه عدد تو سشن به سرور ارسال بشه، یعنی اگه 10 تا کاربر دارن از صفحه به صورت همزمان بازدید میکنن، دقیقه ای 600 درخواست به سایت میرسه -به جز درخواست های عادی دیگه - تو خود حدیث مفصل بخوان از این مجمل). و برای ذخیره ثانیه های سپری شده بهترین کار ذخیره عدد مورد نظر توی کوکی هست؛ یعنی عدد رو توی یه کوکی با جاوااسکریپت بنویسیم و تو اجرای بعدی باز با جاوااسکریپت بخونیم. اگه هم بخواید با سمت سرور کار کنید (که فکر کنم شما همچین قصدی دارید) میتونید یه تگ اینپوت مخفی تو فرم بذارید و تو هر تیک که تایمر میزنه، مقدار ثانیه رو توی اون تگ بنویسید. اینطوری وقتی فرم پست میشه، تگ مورد نظر ثانیه های سپری شده رو با خودش به سرور میبره، اونجا میتونید مقدار رو از تگ بخونید، بعد از این که کار های مورد نظر رو انجام دادید، دوباره مقدار رو توی صفت value تگ بنویسید و به کلاینت برگردونید. تایمرتون هم بر اساس مقدار مورد نظر شمارش رو شروع کنه. نمونه کد html میشه مثل زیر:


<html>
<head>
<script type="text/javascript">
var timer = 60;
function startTimer() {
var temp = document.getElementById("timerset").value;
if (temp == "" || temp == null || temp == undefined || temp == "undefined") {
timer = 60;
} else {
timer = parseInt(temp);
}
tick();
}
function tick() {
timer--;
document.getElementById("timershow").innerHTML = timer + "";
if (timer == 0) {
// Do your ajax work, and show result everywhere you want, like this:
document.getElementById("resultshow").innerHTML = new Date().toLocaleString();
// Then reset your timer to begin again, like this:
timer = 60;
}
document.getElementById("timerset").value = timer;
setTimeout("tick()", 1000);
}
</script>
</head>
<body onload="startTimer()">
<input type="hidden" id="timerset" name="timerset" value="34" />
<span id="timershow"></span>
<div id="resultshow">
</div>
</body>
</html>

موفق باشید.

sam166
دوشنبه 25 بهمن 1389, 21:57 عصر
باز هم ممنون
حالا اگه بخواهیم زمانی که زمان صفر شد یک رکورد از دیتا بیس رو بخونه باید چه کار کنیم؟

Javad_Darvish_Amiry
دوشنبه 25 بهمن 1389, 23:33 عصر
میتونید کد ایژکس مورد نظر رو در این قسمت قرار بدید. توضیحات کامل رو براتون بین کد نوشتم.


// Do your ajax work, and show result everywhere you want, like this:

موفق باشید.

sam166
دوشنبه 25 بهمن 1389, 23:44 عصر
ممنون ولی من از دستورات جاوا اسکریپت اطلاعات کافی ندارم
میشه یه مثال برای خوندن از جدول رو بزنید
ممنونم

sam166
سه شنبه 26 بهمن 1389, 13:26 عصر
از استاتید محترم تقاضا میکنم یک راه حل پیش روی بنده بگذارند