초당 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
'source' 카테고리의 다른 글
Node.js에서 파일의 크기를 찾는 방법은 무엇입니까? (0) | 2023.09.04 |
---|---|
파이썬을 사용하여 네이티브 아이폰 앱을 작성할 수 있습니까? (0) | 2023.09.04 |
키클로크와 스프링을 사용하여 모든 사용자를 읽으려면 어떻게 해야 합니까? (0) | 2023.09.04 |
phpmyadmin에서 내 테이블 이름이 소문자로 변환되는 이유는 무엇입니까? (0) | 2023.09.04 |
JavaScript에서 File 개체를 인스턴스화하는 방법은 무엇입니까? (0) | 2023.09.04 |