반응형
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
반응형
'programing' 카테고리의 다른 글
앵커(a) 태그에서 로컬 href 값 가져오기 (0) | 2023.09.03 |
---|---|
너비 자동과 너비의 차이 100% (0) | 2023.09.03 |
PowerShell cmdlet의 소스 코드를 볼 수 있습니까? (0) | 2023.08.29 |
Excel에 붙여넣기 위해 Windows 클립보드 복사 버퍼에 서식 정보 포함 (0) | 2023.08.29 |
이미지를 회전하고 저장하는 방법 (0) | 2023.08.29 |