2014-09-26 3 views
1

Мне нужно создать div, который будет автоматически обновляться каждые 10 секунд и останавливаться, когда он будет успешно загружен. Я создал этот сценарий jQuery:auto refresh div каждые x секунд и прекратить успешную загрузку

<script type="text/javascript"> 
$(document).ready(function(){ 
    var j = jQuery.noConflict(); 
    j(document).ready(function() 
    { 
     j(".refresh").everyTime(1000,function(i){ 
      j.ajax({ 
       url: "pin.php", 
       cache: false, 
       success: function(html){ 
       j(".refresh").html(html); 
       } 
      }) 
     }) 
    }); 
    j('.refresh'); 
}); 
</script> 

Он работает, но обновление продолжается каждые 10 секунд. Мне нужно, чтобы он остановился, если pin.php возвращает числовой вывод.

Как отредактировать его, чтобы остановить обновление, если pin.php возвращает числовой вывод?

ответ

0

С документацией свыше на http://www.jquery-plugins.info/jquery-timers-00013992.htm, возможно, что вам нужна функция stopTime. Хотя я не проверял, что в вашем success должно работать:

success: function(html) { 
     if (j.isNumeric(html)) { 
      j(".refresh").stopTime(); 
     } else { 
      j(".refresh").html(html); 
     } 
    } 
0

Вы сказали, «мне это нужно остановить, если pin.php возвращает числовой выход». , если .refresh html содержит число, превышающее его, чтобы вызвать вызов ajax, иначе он вызывает вызов.

if(isNaN(j(".refresh").html()){ 

    //put your ajax call in this block 

} 
+5

Пожалуйста, добавьте некоторые пояснения вокруг, почему это решает проблему. –

+0

http://privtool.com/timer_html/index.html – kingcope

0

Вы можете изменить свой код что-то вроде этого:

var temp = setInterval(1000,function(i){ 
      j.ajax({ 
       url: "pin.php", 
       cache: false, 
       success: function(html){ 
       if(isNaN(html)) 
       j(".refresh").html(html); 
       }else{temp.clearInterval();} 
      }) 
    }) 
0

Попробуйте с интервалом, как это, он стреляет до загруженного вызова будет сделан, то он останавливает интервал и ajaxcal

$(document).ready(function(){ 
var j = jQuery.noConflict(); 
jRefresh(); 
var jRefresh = setInterval(function(){ 
     ajaxCall() 
}, 1000); 

function ajaxCall() { 
    j.ajax({ 
     url: "pin.php", 
     cache: false, 
     success: function(html){ 
      if (j.isNumeric(html)) { 
        myStopFunction(); 
      } 
     } 
    }) 
} 

function myStopFunction() { 
     clearInterval(jRefresh); 
} 
}); 
+0

не работает .. is stop, whit out изменить текст div – kingcope

+0

http://privtool.com/timer_html/index.html – kingcope

0

Прежде всего, вам не нужно звонить $(document).ready() дважды. Для Aviod конфликтов можно написать код так:

jQuery(document).ready(function($){ 
    // Your code here 
}); 

Обратите внимание на параметр $

Во-вторых, я думаю, это неполезным использовать каждый раз (выглядит как плагин и не является хорошей идеей, чтобы загрузить много кода, поскольку у вас есть хорошие альтернативы для ваших нужд), когда вы можете просто позвонить setInterval;

В соответствии с вашими потребностями и после того, что я сказал выше, код должен выглядеть так:

jQuery(document).ready(function($){ 

    var interval_time = 10000; 
    var interval = null; 

    var $wrapper = $('.refresh'); 

    interval = setInterval(function(){ 
    $.ajax({ 
     url : 'pin.php', 
     cache : false, 
     success : function(html){ 
     if($.isNumeric(html)){ 
      clearInterval(interval); 
     } 

     $wrapper.html(html); 
     } 
    }) 
    }, interval_time); 


}); 
+0

не работает, не изменяйте данные div refresh – kingcope

+0

вы можете дать мне прямую ссылку на ваш pin.php? Попробуйте заменить $ wrapper внутри «success» на $ ('. Refresh') – stefanz

+0

http://privtool.com/timer_html/index.html – kingcope

Смежные вопросы