내가 사이트 개발 (단지 재미와 jQuery로 프로그래밍 알아보기) 을 그리고 난이 뭐가 잘못 됐는지 알고 싶습니다 해요 : 나는를 업데이트하기 위해 노력하고있어아약스 요청 숨겨진 필드
$(window).unload(function(){
var myid = $('input#v1').attr('value'); // hidden
var playauth = $('input#v2').attr('value'); // hidden
var srvid = $('input#v3').attr('value'); // hidden
var result = 'myid='+ myid +'&auth='+ playauth +'&srvid='+ srvid;
$.ajax({
type: "GET",
data: result,
url: "closing.php",
complete: function(data) {
alert(data.responseText);
}
});
});
데이터베이스 테이블. 창을 닫을 때 아무 일도 일어나지 않습니다. 이 기능의 이전 버전으로 :
window.onunload = function() {
var xhReq = new XMLHttpRequest();
var n = document.getElementById("v1").InnerHTML;
var o = document.getElementById("v2").InnerHTML;
var p = document.getElementById("v3").InnerHTML;
xhReq.open("GET", ("closing.php?myid=" + n + "&auth=" + o + "&srvid=" + p) , false);
xhReq.send(null);
var serverResponse = xhReq.responseText;
alert(serverResponse);
};
은 .. 내가 응답 경고를 보았지만 GET 값은 '정의되지 않은'했다. .... 아마 입력의 유형이 숨겨져 있기 때문에 ..? 이것은 내 양식입니다 ... 어쩌면 내가 뭔가를 놓치고 ?? 나는 jquery/ajax에 정말 새로운데 .. 제발 도와주세요 !!
<form method="get">
<input id="v1" type="hidden" name="val1" class="aget" value="<?php echo $_GET['myid']; ?>" />
<input id="v2" type="hidden" name="val2" class="bget" value="<?php echo $_GET['playauth']; ?>" />
<input id="v3" type="hidden" name="val3" class="cget" value="<?php echo $_SESSION['srvid']; ?>" />
</form>
경고의 한 단어로, 언로드 이벤트에서 ajax/xhttp을 호출하면 브라우저가 페이지를 닫으면 취소되기 전에 요청이 통과한다는 보장이 없습니다. ''onbeforeunload ''를 사용하고 async : false 매개 변수를 사용하여 동시성에 대한 아약스 호출을 설정하는 것이 가장 좋습니다 ... 나는 그런 일을 직접 시도하지 않았습니다. – Pebbl
당신의 제안은 좋았습니다 ...하지만 함수가 작동하지 않습니다 ... 나는 그것을 $ (document) .ready ... 등등 안에 넣어야합니까? – lollo
어떤 기능을 추천하지 않습니까? 만약 당신이'complete' 콜백을 의미한다면, 동기식 아약스 호출이 끝난 직후 브라우저가 더 이상 js를 실행하지 못하게 될 것입니다 ... 적어도 closing.php를 호출 했습니까? 기본적으로 사용자가하려고하는 작업은 항상 까다로운 작업입니다. 특히 사용자가 페이지를 떠나기를 원할 때 추가 처리 작업을 수행 할 때 더욱 그렇습니다. AJAX 호출을 동기식으로 설정하는 것은 약간의 위험이 따릅니다. 이유가 무엇이든지 요청이 중단되면 브라우저도 마찬가지입니다. – Pebbl