source

초당 Ajax 요청 실행

lovecheck 2023. 9. 4. 20:26
반응형

초당 Ajax 요청 실행

php 파일로 아약스 호출이 있습니다.저는 결과를 받고 있습니다.저는 현재 아약스 요청을 1초마다 자동으로 수행하는 것이 가능한지 조사하고 있습니다.라는 입력란에 결과를 게시합니다.hidden함수를 호출하지 않고 3초마다 아약스 호출을 실행하려면 어떻게 해야 합니까?

    $.ajax({
            type: 'POST',
            url: 'increment.php',
            data: $(this).serialize(),
            dataType: 'json',
            success: function (data) {
                    $('#hidden').val(data);// first set the value     

            }
    });

반복되는 일련의 작업을 통해 이 작업을 수행할 수 있습니다.setTimeout호출. (사용 안 함)setInterval와 함께ajax전화를 하면 순식간에 혼란에 빠질 것입니다.setInterval이전 Ajax 호출이 아직 완료되지 않았더라도 다음 Ajax 호출을 실행합니다.)

사용하다setTimeout첫 번째 통화를 예약한 후 다음 통화를 예약하기 위해 완료된 경우 등:

var interval = 1000;  // 1000 = 1 second, 3000 = 3 seconds
function doAjax() {
    $.ajax({
            type: 'POST',
            url: 'increment.php',
            data: $(this).serialize(),
            dataType: 'json',
            success: function (data) {
                    $('#hidden').val(data);// first set the value     
            },
            complete: function (data) {
                    // Schedule the next
                    setTimeout(doAjax, interval);
            }
    });
}
setTimeout(doAjax, interval);

사용 중인 참고 사항complete,것은 아니다.success다음 통화를 예약하여 중단(인터넷 연결에서 발생한 손실 등)으로 인해 프로세스가 중단되지 않도록 합니다.

SSE(Server Sent Events)는 고려해야 할 사항입니다.

이것은 Javascript가 서버 끝점(PHP 파일)에 변경 사항이 발생했는지 확인하기 위해 " 폴링"하는 HTML5 기술입니다.긴 폴링은 기본적으로 JS(Ajax를 사용하는지 다른 기술을 사용하는지 확실하지 않음)가 매 초마다 엔드포인트로 요청을 전송하는 것입니다.

다음과 같이 시도할 수 있습니다.

#/your_js
var evtSource = new EventSource("increment.php");
evtSource.onmessage = function(e) {
    $('#hidden').val(e.data);
}

데이터를 전송하려면 다음과 같이 업데이트된 JSON 개체를 서버로 전송하는 Ajax 호출을 수행할 수 있습니다.

  $(document).on("click", ".your_object", function(data) {
     $.ajax({
                type: 'POST',
                url: 'increment.php',
                data: $(this).serialize(),
                dataType: 'json'
        });
   });

이렇게 하면 이벤트를 수행할 때만 Ajax 요청이 열리며, 앱은 매 초마다 응답을 "듣기"합니다.아시다시피, Ajax의 긴 폴링은 매우 자원 집약적이기 때문에 진정한 "실시간" 기술을 원한다면 웹 소켓을 살펴보는 것이 더 낫겠지만, 어느 쪽이든, 이것은 단순한 Ajax를 모든 것에 사용하는 것보다 훨씬 효율적인 시스템이 될 것입니다.

여기 주의사항 -- 당신은 당신의 옷을 갈아입어야 할 것입니다.increment.php다양한 반응 유형을 처리하는 방법

예 사용 가능

아약스를 함수 내에 유지합니다.

function fun() {
$.ajax({
            type: 'POST',
            url: 'increment.php',
            data: $(this).serialize(),
            dataType: 'json',
            success: function (data) {
                    $('#hidden').val(data);// first set the value     

            }
    });
}

지금 사용 중setInterval매초마다 실행할 수 있습니다.

var interval = setInterval(fun, 1000);

사용을 일시 중지/해제하려면clearInterval

clearInterval(interval);

다음과 같이 사용합니다.setInterval는 현명하지 않으므로 사용해 보십시오.

var interval;
function callAjax() {
  $.ajax({
                type: 'POST',
                url: 'increment.php',
                data: $(this).serialize(),
                dataType: 'json',
                success: function (data) {
                        $('#hidden').val(data);// first set the value 
                        interval = setTimeout(callAjax, 1000);   
                }
        });
}
callAjax();
//clearTimeout(interval);

언급URL : https://stackoverflow.com/questions/20371695/execute-an-ajax-request-every-second

반응형