parse
看起来像一个全局变量,所以它可以在任何地方使用。问题可能出在您尝试访问它时。您只能访问parse
您的.done()
处理程序或您从中调用的某些函数。
原因是您的 ajax 调用是异步的。这意味着操作开始,您的 javascript 的其余部分继续执行,然后在某个时间之后,ajax 调用完成,只有那时parse
变量才有效。因此,确实没有理由以 parse
您的方式声明变量。您应该只在.done()
处理程序中使用它的值。
这是异步编程,其工作方式与同步、顺序编程不同。您必须将异步编程技术与异步 ajax 调用一起使用。
如果您尝试访问处理程序parse
内部.done()
并且它仍然是空的,那么问题可能data.item
不是您认为的那样,并且可能没有触发.each()
循环,因此没有任何东西进入foo
or parse
。data
要调试这种情况,您应该查看和中究竟是什么data.item
。
这将是我的建议:
$.ajax({
type: "GET",
url: "some/path/",
data: somedata
}).done(function( data ){
// no reason for these variables to be wider scope than here
var foo = [], parse;
$.each(data.item, function(i, value){
foo.push(value);
});
parse = foo.join(', ');
// look at parse here
console.log(parse);
// if parse still empty, then look at data and data.item here
// to see what they are for debug reasons
console.log(data);
console.log(data.item);
// now, you can use parse here
callSomeFunction(parse);
});