好的,这可能是一个愚蠢的问题,但我找不到解决我的问题的方法。我有这样的功能:如何管理Dojo中的ajax响应
function getActivityObj(sysId, date) {
var activityObj = dojo.xhrGet({
url: 'calendar/display-subactivities',
content: {'sysId': sysId, 'date': date},
handleAs: 'json',
load: function(result) {
console.log(result);
},
error: function(){
alert("error");
}
});
var ajaxResponse = activityObj.ioArgs.xhr.response;
return ajaxResponse;
}
的问题是,我的ajaxResponse变量始终是空的,但如果在Firebug,XHR对象的响应属性不为空。 我会在我的代码中的几个地方使用ajax响应,所以我在做什么错误或什么是更好的方式来调用ajax响应?谢谢。 (对不起我的英文不好)
异步代码要求您稍微小心一点。你需要明确地链接回调(通过load,addCallback或者然后)以便对动作进行排序,并且你必须*不*假定在相应的函数调用返回后IO动作完成。 – hugomg
好吧,xhrGet是异步的(因为你没有明确地将它设置为同步),所以Ajax调用不会直到AFTER函数getActivityObj完成 - 因为JavaScript是单线程的。 'xhrGet'不会执行Ajax调用,它会在函数返回后立即调用Ajax调用。因此,在这个功能块结束之前,'ajaxResponse'总是**总是空的。 –
是的,现在(在阅读答案和评论之后)我终于明白了什么是异步/同步的东西。 – sica07