ورود

View Full Version : مشکل با clearInterval



kianajoo
دوشنبه 01 مهر 1392, 01:17 صبح
درود...

var interval = null;

interval = setInterval (function() {

$.post('test.php', function(data) {

if(data.success){
alert("ok");
}else {
alert("error");
clearInterval(interval);
}
}, 'json');

}, 3000);




من با این کد هر 3 ثانیه یک بار به صورت آجکس پیام مورد نظرم رو میگیرم...
اگه فایل test.php مقدار success= true رو بده من هر 3 ثانبه پیام ok رو دریافت میکنم...و در غیر این صورت
یک بار پیام error رو میگیرم و با clearInterval به این حلقه خاتمه میدم...تا اینجا همه چیز خوب پیش میره...
ولی بعد از اینکه دوباره مقدار success= true میشه دیگه کد پیام ok رو هر نمایش نمیده.....

کلا میخوام وقتی مقدار success= true شد هر 3 ثانیه پیام ok داده بشه و در غیر این صورت فقط یک بار پیام error رو نمایش بدم....و این حالت بدون رفرش کردن صفحه ادامه داشته باشه...
از اساتید ممنون میشم منو راهنمایی کنن....
:متفکر:

jalil_gh
دوشنبه 01 مهر 1392, 08:00 صبح
شما میخایید یک درخواست بفرستید. اگه جوابش true بود سه بار پیام ok نمایش داده بشه به فاصله زمانی سه ثانیه. اگر هم جواب false بود فقط یک بار error نمایش بده.
بعد دوباره یه درخواست دیگه بفرسته و همین کارار بالا رو دوباره انجام بده. درست متوجه شدم؟؟؟؟

kianajoo
دوشنبه 01 مهر 1392, 11:56 صبح
درود....
من میخوام این کار با آجکس انجام بشه....و اگه جواب true بود هر 3 ثانیه یک پیغام ok بده... انقدر پیام ok رو بده تا مقدار false بشه....یعنی تا وقتی که true هست پیام ok رو بده نه اینکه فقط 3 تا...
کد من تا اینجا که false هم میشه خوب کار میکنه و مشکل اینجاست که بعد از false اگه true بشه دیگه کار نمیکنه...مگه اینکه صفحه رو رفریش کنم و این دقیقا مشکل منه که نمیخوام صفحه رفریش بشه...
جواب درخواست که false میشه پیام error رو یک بار نشون میده و بعد تابع clearInterval حلقه رو از بین میبره....خوب حالا اگه دوباره درخواست true بشه خبری از حلقه setInterval نیست.....

Javidhb
دوشنبه 01 مهر 1392, 12:21 عصر
طبیعیه clearInterval باعث میشه که دیگه Interval شما کار نکنه (دیگه مقداری رو به سرور نمیفرسته و نمیگیره)

شماباید clearInterva رو پاک کنید..

اگه بازم منظورتون یه چیز دیگه بود.. بزارید بحساب کج بودن دوزاری من!!!

kianajoo
دوشنبه 01 مهر 1392, 12:34 عصر
حرف شما درست دوست عزیز...
من میخوام فقط یک بار پیام error رو نشون بدم...
اگه clearInterva رو پاک کنم، پیام error بیشتر از یک بار نشون داده میشه...

sinoser
دوشنبه 01 مهر 1392, 12:57 عصر
یه سوال
می خوای وقتی خطا داد بازم همون جور 3 ثانیه چک بشه یا نه ؟
منظورم اینه بعد از پیام خطا این روند ایا ادامه پیدا می کنه یا نه

اگر بعد خطا بازم می خوای چک بشه خب اصلا clear نکن خود تابع دوباره درخواست ajax وبعد 3 ثانیه ارسال می کنه و اگر درست بود ok نوشن میده!

کلا بگو بعد خطا چه روندی انجام میشه و تکلیف چیه

Javidhb
دوشنبه 01 مهر 1392, 13:26 عصر
var interval = null;
var errorShown = false;

interval = setInterval (function() {

$.post('test.php', function(data) {

if(data.success){
alert("ok");
errorShown = false;
}else if(!data.success && !errorShown){
alert("error");
errorShown = true;
}else{
//natije "false" bude vali error ro neshon nemide
}
}, 'json');
}, 3000);

kianajoo
دوشنبه 01 مهر 1392, 13:45 عصر
یه سوال
می خوای وقتی خطا داد بازم همون جور 3 ثانیه چک بشه یا نه ؟
منظورم اینه بعد از پیام خطا این روند ایا ادامه پیدا می کنه یا نه

اگر بعد خطا بازم می خوای چک بشه خب اصلا clear نکن خود تابع دوباره درخواست ajax وبعد 3 ثانیه ارسال می کنه و اگر درست بود ok نوشن میده!

کلا بگو بعد خطا چه روندی انجام میشه و تکلیف چیه

خوب من اگه clear رو بردارم هر 3 ثانیه پیام error رو میده....من میخوام پیام error فقط یک بار داده بشه و بعد از اون اگه دوباره مقدار بازگشتی true بود دوباره هر 3 ثانیه پیام ok رو نشون بدم....

kianajoo
دوشنبه 01 مهر 1392, 13:46 عصر
var interval = null;
var errorShown = false;

interval = setInterval (function() {

$.post('test.php', function(data) {

if(data.success){
alert("ok");
errorShown = false;
}else if(!data.success && !errorShown){
alert("error");
errorShown = true;
}else{
//natije "false" bude vali error ro neshon nemide
}
}, 'json');
}, 3000);


ممنون این دقیقا اون چیزی هست که میخواستم....