jQuery Ajax Post -无法使用回调函数设置全局变量
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);
Ajax是异步发生的,这意味着在它之后出现的代码不会等待它完成。因此,您的console.log
在ajax必须获得填充对象所需的内容之前执行。
尝试将您的console.log
语句移动到回调内部-将其放在您设置appointment
的行之后。
console.log()
在ajaxCallback()
和appointment
设置之前被触发(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 success
之前执行。控制ajaxCallBack
函数中的变量
function ajaxCallBack(data) {
var response = $.parseJSON(data.d);
appointment = { startDate: response.startDate,
endDate: response.endDate };
console.log(appointment);
}
相关文章:
- JavaScript回调函数
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- 如何正确地将参数传递给RequireJS回调函数
- 回调函数在python代码中离线
- 从AJAX回调函数中分离数据
- 赋值后的回调函数
- 如何在javascript回调函数中返回多个变量
- 函数表达式,返回回调函数
- 等待回调函数执行
- JavaScript回调函数和Google Feed API
- 如何从ajax成功回调函数中读取javascript变量
- 正在保存JavaScript内部回调函数中的值
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- 如何在javascript中添加带有回调函数的按钮点击事件作为window.conf
- 在Golang回调函数中启用CORS
- 在初始函数完成之前调用回调函数
- jQuery Mobile:如何在$.Mobile.changePage之前运行回调函数
- 即使使用回调函数也无法返回值
- 为什么prototypjs观察到回调函数有绑定