2016-11-23 5 views
0

Я все еще новичок в JQuery, я использовал setTimeout для загрузки вставленных данных через определенное время. Я попробовал примеры, а также ответы на эту проблему, но ничего не получилось!JQuery setTimeout не работает по какой-то причине

Что я делаю неправильно?

<script> 
    $(document).ready(function(){ 
     function fetch_data(){ 

      $.ajax({ 
       url:"getdata.php", 
       success: function(data){ 
        $('.result').html(data); 
       } 

      }); 
     } 
     fetch_data(); 

     setTimeout(function() { 
      fetch_data(); 
     }, 2000); 


    }); 
</script> 
+0

Ваш код выше работает так, как он написан, он сразу вызывает 'fetch_data', а затем вызывает его через 2 секунды. – LoganRx

+0

Все работает отлично. Включите ли вы библиотеку jQuery? – Anson

+0

Как вы ожидаете его работы? Все хорошо. – sideroxylon

ответ

0

Просто используйте setInterval. Вот код, который вам понадобится.

JavaScript

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

     $.ajax({ 
      url:"getdata.php", 
      success: function(data){ 
       $('.result').html(data); 
      } 

     }); 
    } 
    fetch_data(); 

    setInterval(function() { 
     fetch_data(); 
    }, 2000); 
}); 
0

Кажется, что ваш код верен. Я думаю, проблема в вызове jQuery.ajax, поэтому я думаю, что он возвращает «сбой». Пожалуйста, добавьте метод «error» и проверьте его следующим образом.

$(document).ready(function(){ 
    function fetch_data(){ 
     $.ajax({ 
      url:"getdata.php", 
      success: function(data){ 
       $('.result').html(data); 
      }, 
      error: function(xhr, textStatus, errorThrown){ 
       alert('request failed'); 
      } 
     }); 
    } 

    fetch_data(); 

    setTimeout(function() { 
     fetch_data(); 
    }, 2000); 
}); 
0

Ваш код швы хорошо. Но в вашем коде функция fetch_data будет вызываться дважды.

ЕСЛИ вам нужно позвонить только fetch_data через 2 секунды. Удалите вызов fetch_data(); после объявления.

Следующий образец объяснит это четко.

$(document).ready(function(){ 
 
    function fetch_data(){ 
 
    $('#message').append('<p>called fetch</p>'); 
 
    } 
 

 
    fetch_data(); 
 

 
    setTimeout(function() { 
 
    fetch_data(); 
 
    }, 2000); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script> 
 
<div id="message"></div>

Как уже упоминалось в предыдущих ответах, это может быть проблемой в провале АЯКС запрос. Поэтому убедитесь, что вызов ajax работает нормально.