【发布时间】:2015-02-01 08:49:33
【问题描述】:
我有以下类型的结构:
(function(){
var objects = [];
$('button.one').on('click', function(){
fetchObjects = function(objects) {
$.post("/fetchObjects")
.done(function(data){
objects = data;
console.log(objects.length);
});
}
fetchObjects(objects)
});
$('button.two').on('click', function(){
console.log(objects.length);
});
})();
你可以看到我有一个变量objects,它是这个函数的本地变量。最初它是空的。当我单击button.one 时,我希望使用某个ajax 请求的返回值填充objects。它似乎可以工作,但是当单击button.two 时,objects 变量仍然是一个空数组。
为什么 jQuery 回调中没有 objects?
我也尝试过这种方法,但结果相同:
function callback(data) {
facilities = data
}
$.post("/fetchObjects")
.done(function(data){
callback(data);
});
我在这里缺少什么?请不要告诉我将“对象”设为全局。
【问题讨论】:
-
objects = data不会改变原来的objects变量。 -
为什么将对象作为参数传递?直接访问不是更方便吗?
-
objects = data没有直接访问它?如果没有,我如何直接访问它? @Juhana 我知道。那有什么办法呢?
标签: javascript jquery asynchronous callback scope