programing

jQuery ajax 호출 반복

abcjava 2023. 8. 29. 20:07
반응형

jQuery ajax 호출 반복

10초마다 jQuery 아약스 호출을 반복하는 방법은 무엇입니까?

$(document).ready(function() {
    $.ajax({    
        type: "GET",    
        url: "newstitle.php",   
        data: "user=success",    
        success: function(msg) {
            $(msg).appendTo("#edix");    
        }  
    });

함수로 $.ajax를 랩하고 setInterval로 함수를 호출하려고 했습니다.

$(document).ready(function() {
    function ajaxd() { 
        $.ajax({
            type: "GET",
            url: "newstitle.php",
            data: "user=success",
            success: function(msg) {
                $(msg).appendTo("#edix");
            }
        });
    }
    setInterval("ajaxd()",10000);
});

하지만 "jaxd가 정의되지 않았습니다"라고 표시됩니다.

준비된 메소드 안에 메소드를 배치해서는 안 됩니다. 그렇지 않으면 메소드는 그 에서만 사용할 수 있고 밖에서는 사용할 수 없습니다.

$(document).ready(function() {
    setInterval(ajaxd, 10000);
});

function ajaxd() { 
  $.ajax({
   type: "GET",
   url: "newstitles.php",
   data: "user=success",
   success: function(msg){
     $(msg).appendTo("#edix");
   }
 });
}

사용하는 것이 더 좋습니다.setTimeout그래서 당신은 이전 것이 완료되었을 때만 요청을 합니다.

수행 방법

어떤 이유로 요청(서버 오작동, 네트워크 오류)이 정의된 시간보다 더 오래 걸린다고 가정해 보십시오.동시에 요청하는 것이 많을 것입니다. 별로 좋지 않습니다.그리고 만약 당신이 앞으로 시차를 10초에서 1초로 줄이기로 결정한다면 어떻게 될까요?

$(function() {
  var storiesInterval = 10 * 1000;
  var fetchNews = function() {
    console.log('Sending AJAX request...');
    $.ajax({
      type: "GET",
      url: "newstitles.php",
      data: {
        user: 'success',
        some: ['other', 'data']
      }
    }).done(function(msg) {
      $(msg).appendTo("#edix");
      console.log('success');
    }).fail(function() {
      console.log('error');
    }).always(function() {
      // Schedule the next request after this one completes,
      // even after error
      console.log('Waiting ' + (storiesInterval / 1000) + ' seconds');
      setTimeout(fetchNews, storiesInterval);
    });
  }
  
  // Fetch news immediately, then every 10 seconds AFTER previous request finishes
  fetchNews();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

알아요, 6년 만에.하지만 여전히, 저는 그것이 다른 사람들을 위한 가치가 있다고 생각했습니다.

왜 OP의 코드가 작동하지 않았나요?

당신의 코드가 주로 작동하지 않았다는 것에 주목할 필요가 있습니다, 왜냐하면 당신은 당신의 코드를 통과했기 때문입니다.ajaxd()함수 호출을 문자열로 사용합니다.setInterval그것은 좋은 관행이 아닙니다. 부분적으로는setInterval함수가 전역적으로 정의될 것으로 예상합니다.내 예와 같이 함수에 대한 참조를 사용해야 합니다.그러면 기능이 정의된 위치와 익명 여부는 중요하지 않습니다.

$(document).ready(function() {

setInterval(function() { 
  $.ajax({
   type: "GET",
   url: "newstitle.php",
   data: "user=success",
   success: function(msg){
     $(msg).appendTo("#edix");
   }
 });
}, 10000);

});

언급URL : https://stackoverflow.com/questions/5140939/repeat-jquery-ajax-call

반응형