[英]jQuery Ajax Post - Unable to set global variable using callback function?
我有以下的ajax方法。 成功后,我想設置一個全局變量,但它似乎不起作用-控制台返回空對象。 僅當我將async定義為false時,它才有效。 但是我想保持ajax方法異步。 我該如何工作?
var appointment = {};
if ($("#Appointment").is(":checked")) {
$.ajax({
type: "POST",
url: "someurl",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({
dateStart: moment()
}),
// async: false,
dataType: "json",
success: function(data) {
ajaxCallBack(data);
}
});
function ajaxCallBack(data) {
var response = $.parseJSON(data.d);
appointment = { startDate: response.startDate, endDate: response.endDate };
}
}
console.log(appointment);
在ajaxCallback()
之前和設置appointment
之前會觸發console.log()
( ajax
是異步的),要顯示控制台中的appointment
,您可以運行:
function ajaxCallBack(data) {
var response = $.parseJSON(data.d);
appointment = { startDate: response.startDate, endDate: response.endDate };
console.log(appointment);
}
要么
function ajaxCallBack(data) {
var response = $.parseJSON(data.d);
appointment = { startDate: response.startDate, endDate: response.endDate };
printAppointment();
}
// define as global:
function printAppointment() {
console.log(appointment)
}
Ajax是異步發生的,這意味着它不會等待其完成后出現的代碼。 因此,您的console.log
在ajax必須獲得填充對象所需的內容之前就已執行。
嘗試將console.log
語句移動到回調內部-將其放在設置appointment
的行之后。
ajax是異步操作。 因此console.log
甚至會在ajax success
之前執行。 從ajaxCallBack
函數控制變量
function ajaxCallBack(data) {
var response = $.parseJSON(data.d);
appointment = { startDate: response.startDate,
endDate: response.endDate };
console.log(appointment);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.