[英]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.