parse
看起來像一個全局變量,所以它可以在任何地方使用。這個問題可能是在你嘗試訪問它的時候。您只能訪問.done()
處理程序中的parse
或您從中調用的某些功能。
原因是你的ajax調用是異步的。這意味着該操作開始,您的JavaScript的其餘部分繼續執行,然後有一段時間ajax調用完成,然後纔是parse
變量有效。因此,實際上沒有理由按照您的方式聲明parse
變量。您應該在.done()
處理程序中使用它的值。
這是異步編程,工作方式與同步順序編程不同。您必須使用異步編程技術與異步ajax調用。
如果您嘗試訪問parse
的.done()
處理程序中,它仍然空在那裏,那麼問題很可能是data.item
是不是你想的是,也許不是觸發.each()
循環,從而沒有什麼是投入foo
或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);
});
檢查錯誤控制檯。 –
你在哪裏放置警報?另外 - 在調試器中,您是否在'data'變量中看到數據?此外 - 這是無效的Javascript(你有錯誤) – Leon
可能重複的[如何從AJAX調用返回響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response -a-ajax-call) –