$.ajax() からデータを取得する単純な呼び出しを実行しようとしており、ajax 呼び出しを呼び出した関数で使用できるグローバル変数に保存したいと考えています。
変数が設定されていないのはなぜですか? 設定した値が失われるのはなぜですか?
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);
}
});
alert()
上記のコードの sからの出力:
in namespace
in startCall()
in finishCall()
in ajax succeeded call
in finishCall()
最後の変数が「in ajax successfully call」ではなく「in finishCall()」に設定されるのはなぜですか?
私は jQuery や JavaScript の専門家ではないことに注意してください。
どうもありがとう!