$ .ajax()에서 데이터를 다시 가져 오는 간단한 호출을하려고하는데이 함수에서 사용할 수있는 전역 변수에 저장하려고합니다. 아약스 전화를했다.jQuery는 .ajax() 호출 후 데이터를 보존 할 수 없습니다.
변수가 설정되지 않는 이유는 무엇입니까? 왜 제가 설정 한 가치가 없어지나요? 상기 코드에서의 alert()
jQuery.support.cors = true;
$.myNamespace = {
timerID: "in namespace"
};
$(document).ready(function() {
$("#btnSkip").click(function() {
alert($.myNamespace.timerID);
startCall();
});
function startCall() {
$.myNamespace.timerID = "in startCall()";
alert($.myNamespace.timerID);
finishCall();
alert($.myNamespace.timerID);
}
function finishCall() {
$.myNamespace.timerID = "in finishCall()";
alert($.myNamespace.timerID);
$.ajax({
type: "GET",
url: getUrl,
processData: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$.myNamespace.timerID = "in ajax succeeded call";
alert($.myNamespace.timerID);
},
error: function (xhr, status, error) {
GetSongInfoFailed(xhr, status, error);
}
});
}
function GetSongInfoFailed(xhr, status, error) {
alert('Service call failed: ' + xhr + ' ' + status + ' ' + error);
}
});
출력 :
in namespace
in startCall()
in finishCall()
in ajax succeeded call
in finishCall()
"in ajax succeeded call"대신 "in finishCall()"으로 마지막 변수가 설정되는 이유는 무엇입니까?
참고, 저는 jQuery 또는 javascript 전문가가 아닙니다.
정말 고마워요!
function GetSongInfoSucceeded(C) {
if (result != null) {
$.myNamespace.timerID = "in ajax succeeded call";
alert($.myNamespace.timerID);
} else { }
}
디버깅을 위해 경고 사용을 중지하면 대신 console.log (message)를 사용하십시오. 파이어 폭스에서 파이어 버그를 사용하거나 사파리 또는 크롬에서 개발 도구를 사용할 수 있습니다. 그렇게한다면 훨씬 행복해질 것입니다. –
감사드립니다. 이것은 5 분짜리 프로젝트라고 생각했습니다. 이 때문에 몇 시간이 끝났습니다. – dropsOfJupiter