페이지 언로드에 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파라미터를 지정합니다.
동기 요청은 완료될 때까지 브라우저를 잠급니다.요청이 비동기일 경우 페이지는 계속 언로드됩니다.그 요청은 발동할 시간조차 없을 정도로 충분히 빠르다.
비동기 = 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);
}
MDN은 이벤트 사용을 권장합니다.
$(window).on("visibilitychange", (event) => {
if (document.visibilityState === 'hidden') {
navigator.sendBeacon("https://example.com/endpoint", yourDataToSend);
}
});
(jquery 이외의 버전에서는window.addEventListener("visibilitychange").)
MDN에서:
웹 사이트에서는 사용자가 페이지를 완료하면 서버에 분석 또는 진단을 보내려고 하는 경우가 많습니다.이 작업을 수행하는 가장 신뢰할 수 있는 방법은 데이터 전송 경로로 데이터를 전송하는 것입니다.
visibilitychange이벤트
및 이벤트 사용은 피해야 합니다.
이 SO 포스트는 이 상황에 대한 조사도 잘 되어 있는 것 같습니다.
언급URL : https://stackoverflow.com/questions/1821625/ajax-request-with-jquery-on-page-unload
'programing' 카테고리의 다른 글
| 네이티브 변경 리스닝 포트 대응 (0) | 2023.02.21 |
|---|---|
| JavaScript가 AJAX 이벤트를 검출하다 (0) | 2023.02.21 |
| AngularJS 1.3 또는 AngularJS 1.2.x (0) | 2023.02.21 |
| Postman - 글로벌 변수를 JSON 본문에 전달하는 방법 (0) | 2023.02.21 |
| React 구성 요소의 상태 개체에서 속성을 제거하려면 어떻게 해야 합니까? (0) | 2023.02.21 |