jQuery/PHP를 사용하여 긴 폴링을 만들었습니다. 그것은 완벽하게 작동합니다. 문제는 사용자가 다른 링크를 클릭하거나 현재 페이지를 새로 고치면 서버에서 마지막 AJAX 요청의 응답을받을 때까지 현재 페이지에 멈추게됩니다.AJAX 요청에 대한 서버 응답까지 기다리고 싶지 않음
서버 측에서 최신 데이터를 선택하기 위해 약 30 초를 설정했습니다. 누군가가 최신 데이터를 가져 오기 위해 요청을 보낸 경우 응답을 반환 할 때까지 다른 페이지로 이동하거나 현재 페이지를 새로 고칠 수 없습니다. 최악의 경우는 서버가 최신 데이터를 찾지 못하면 30 초 후에 응답을 보냅니다.
다음 코드를 사용하여 요청을 중단했습니다.
window.onbeforeunload = function(event) {
xhr.abort();
}
나는 전에 콘솔에 확인 후이 readyState=1
다음 readyState=0
보여줍니다 xhr.abort()
을 실행할 수 있습니다. 즉, xhr.abort()
이 성공적으로 실행 되었습니까? 그러나 응답을 반환 할 때까지 여전히 페이지가 현재 페이지에 멈추는 이유는 무엇입니까?
제발 내 문제를 해결하는 데 도움이됩니다. 사용자가 다른 링크를 클릭하거나 페이지를 새로 고치거나 페이지에서 다른 작업을 수행 할 때까지 서버 응답을 기다릴 필요가 없습니다.
이 내 jQuery 코드
function setNoti(ntotal)
{
var t;
xhr = $.ajax({
type: "POST", url: myURL, data: "", dataType: "JSON", cache: false, async: true,
success: function(data) {
// do my work here
clearInterval(t);
t = setTimeout(function() {
setNoti(20);
}, 1000);
return false;
},
error: function()
{
clearInterval(t);
t = setTimeout(function() {
setNoti(0);
}, 40000);
return false;
}
});
}
찾을 도와주었습니다 "이 xhr.abort() 성공적으로 실행을 의미 하는가를?" Firebug에서 "응답"시간과 함께 중단 된 것을 볼 수 있습니다. – MrYellow