0

我正在完成正确的工作,但是分配给范围更广的变量不起作用。它适用于例如$.each(...)所以我错误地认为它也可以在这里工作。

var outee = null;
$.ajax({
  url: "http://...",
  dataType: 'jsonp',
  ...
}).done(function (stuff) { 
  // works well
  displayThe(stuff);
  // works well (but targets probably a global outee)
  outee = stuff;
  displayThe(outee);
});
// fail due to outee being nada, nicht, zilch etc.
displayThe(outee);

如何在获取它的done方法中存储用于在匿名函数范围之外使用的东西?

我是否正确假设done内部 的分配指的是全局outee?解决我的问题的一种方法是不要通过声明 n 的方法来隐藏全局outee var -ed outsee,对吗?但这对我来说是一种糟糕的编程风格。注释?

4

1 回答 1

1

是的,你是对的,你正在分配给你的全局变量.done,这没有错,问题是你试图在你的 ajax 调用完成之前使用这个全局变量(即在你.done被执行之前)。

那是因为异步行为或 ajax。使其工作的一种不好的方法是使您的 ajax 调用与async:false

于 2013-06-22T09:45:22.243 回答