2016-08-14 2 views
0

Мой интервал не останавливается, когда я нажимаю кнопку отправки, а затем начинаю интервал после этого.Интервал не останавливается при нажатии кнопки

Я создаю чат-систему, которая должна перезагружать чат снова и снова, но сообщение отправки ОЧЕНЬ медленно, когда перезагрузка чата запущена, поэтому она должна прекратить перезагрузку чата при запуске сообщения, а затем снова начать снова.

Сценарий:

<script> 
$(document).ready(function(){ 
    function auto_load(){ 
     $.ajax({ 
      url: "index.php?url=userchat1&id=1", 
      cache: false, 
      success: function(data){ 
      $("#chatdiv").html(data); 
      } 
     }); 
     } 
     auto_load(); 
     //Refresh auto_load() function after 500 milliseconds 
     var myVar = setInterval(function(){ auto_load() }, 500); 

     $('#beskedform').on('submit', function (e) {  
       e.preventDefault(); 
       $.ajax({ 
       type: 'post', 
       url: 'index.php?url=chatsubmit&id=1', 
       data: $('#beskedform').serialize(), 
       success: function() { 
        $("#msg").attr('value',''); 
        $("#msg").removeAttr('disabled'); 
        $("#msgbutton").removeAttr('disabled'); 
        var myVar = setInterval(function(){ auto_load() }, 500); 
       } 
      }); 
      clearInterval(myVar); 
      $("#msg").attr('disabled','disabled'); 
      $("#msgbutton").attr('disabled','disabled'); 

     }); 
    }); 
</script> 

HTML:

     <form id="beskedform"> 
          <textarea name="msg" id="msg" class="form-control content-group" rows="3" cols="1" placeholder="Skriv din besked..."></textarea> 

          <div class="row"> 
           <div class="col-xs-6"> 
           </div> 

           <div class="col-xs-6 text-right"> 
            <button type="submit" id="msgbutton" class="btn bg-teal-400 btn-labeled btn-labeled-right"><b><i class="icon-circle-right2"></i></b> Send</button> 
           </div> 
          </div> 
         </form> 
+3

'myVar' внутри обратного вызова успеха является слежка внешний' myVar'. Это две разные переменные. – elclanrs

+0

Как исправить тай? – TechTimeGames

+2

@elclanrs говорит правду. Удалить ключевое слово var при успешном обратном вызове –

ответ

0

Пожалуйста, используйте этот скрипт.

<script> 
$(document).ready(function(){ 
function auto_load(){ 
    $.ajax({ 
     url: "index.php?url=userchat1&id=1", 
     cache: false, 
     success: function(data){ 
     $("#chatdiv").html(data); 
     } 
    }); 
    } 
    auto_load(); 
    //Refresh auto_load() function after 500 milliseconds 
    var myVar = setInterval(function(){ auto_load() }, 500); 

    $('#beskedform').on('submit', function (e) {  
      e.preventDefault(); 
      $.ajax({ 
      type: 'post', 
      url: 'index.php?url=chatsubmit&id=1', 
      data: $('#beskedform').serialize(), 
      success: function() { 
       $("#msg").attr('value',''); 
       $("#msg").removeAttr('disabled'); 
       $("#msgbutton").removeAttr('disabled'); 
       myVar = setInterval(function(){ auto_load() }, 500); 
      } 
     }); 
     clearInterval(myVar); 
     $("#msg").attr('disabled','disabled'); 
     $("#msgbutton").attr('disabled','disabled'); 

    }); 
}); 

+0

Мне потребовалось 3 минуты, чтобы найти изменения, которые вы сделали (прежде чем я прочитал комментарии выше) ... Вы должны хотя бы объяснить, почему вы это сделали, вот что дает ответ _good_. – blex

+0

Нет никакой разницы между моим сценарием и тем, который вы опубликовали? – TechTimeGames

+0

@TechTimeGames есть одно отличие: 'myVar = setInterval (function() {auto_load()}, 500);' мы не переопределяем 'myVar', но вместо этого мы используем уже созданную переменную –

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