페이지 언로드시 JQuery를 사용한 Ajax 요청
나는 이것을 시도하고있다 :
$(window).unload( function () {
$.ajax({
type: "POST",
url: "http://localhost:8888/test.php?",
data: "test",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
alert (c);
});
그러나 성공 경고는 표시되지 않으며이 요청이 서버에 도달하지 않는 것 같습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
async : false
매개 변수를 사용하여 요청을 동기식 (기본적으로 비동기식)으로 만들어야한다고 생각합니다 .
동기 요청은 완료 될 때까지 브라우저를 잠급니다. 요청이 비동기 인 경우 페이지는 계속 언로드됩니다. 요청이 실행될 시간조차 없을 정도로 빠릅니다.
async = false로 호출 해보십시오.
jQuery.ajax({url:"http://localhost:8888/test.php?", async:false})
방금 시도했습니다.
가장 좋은 해결책은 navigator.sendBeacon 을 사용하는 것 입니다. 새로운 버전의 브라우저에서 구현되기 시작한 새로운 기능입니다. 이 기능은 Chrome 39 및 Firefox 31보다 새로운 브라우저에서 사용할 수 있습니다. 작성 당시 Internet Explorer 및 Safari에서는 지원되지 않습니다. 아직 새 기능을 지원하지 않는 브라우저에서 요청이 전송되도록하려면 다음 솔루션을 사용할 수 있습니다.
var navigator.sendBeacon = navigator.sendBeacon || function (url, data) {
var client = new XMLHttpRequest();
client.open("POST", url, false); // third parameter indicates sync xhr
client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
client.send(data);
};
이 함수는 성공 콜백을 등록 할 수 없습니다.
HTML 5 규격은 그 상태 alert()
, prompt()
등이 동안 사용할 수 없습니다 window.unload()
이벤트입니다. 자세한 내용은 window.unload () 를 참조하십시오. console.log('success');
대신을 사용하여 결과를 확인할 수 있습니다 alert()
.
onbeforeunload
대신 이벤트를 사용하여 더 많은 성공을 거둘 수 있습니까?
$(window).bind('beforeunload', ...
귀하의 함수와 Ajax 호출은 괜찮아 보이므로 ajax 호출이 서버로 돌아갈 시간이 있기 전에 브라우저 창이 닫힙니다. 창이 닫힐 때 ajax 호출이 무언가를 반환 할 수 있습니다. ajax 호출에 오류 함수를 추가하여 그 경우인지 확인하십시오.
error: function (xhr, textStatus) {
alert('Server error: '+ textStatus);
}
참고 URL : https://stackoverflow.com/questions/1821625/ajax-request-with-jquery-on-page-unload
'developer tip' 카테고리의 다른 글
최상의 이미지 축소 알고리즘 (품질 측면)은 무엇입니까? (0) | 2020.11.08 |
---|---|
새 C ++ 프로젝트에 ATL, MFC, Win32 또는 CLR을 사용할지 어떻게 결정합니까? (0) | 2020.11.08 |
Guid.Parse () 또는 new Guid ()-차이점은 무엇입니까? (0) | 2020.11.08 |
Mockito 구문에 대한 가져 오기 정적 문 찾기 (0) | 2020.11.08 |
목록의 정수 범위 합계 (0) | 2020.11.08 |