developer tip

페이지 언로드시 JQuery를 사용한 Ajax 요청

copycodes 2020. 11. 8. 10:12
반응형

페이지 언로드시 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

반응형