data
是覆蓋results
,剛過results
已返回。
可以使用ajax
函數而不是getJSON
,因爲getJSON
僅僅是
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});
速記,然後也設置async
到false
,使調用將阻塞。
但是,在你的情況下,這將無法正常工作,因爲JSONP請求(與"?callback=?"
)不能同步。
其他(更好)選項是讓任何代碼依賴results
返回值被success
回調調用。
所以,與其是這樣的:
var results = ajax.get.venues('search');
$('#results').html(translateResults(results));
也許是這樣的:
ajax.get.venues('search', function (results) {
$('#results').html(translateResults(results));
});
venues = function (search, callback) {
$.getJSON("http://x.com/some.php?term="+search+"&callback=?",
function(data){
callback(data);
});
};
不是範圍問題。您需要了解異步代碼和回調是如何工作的。見例如。 http://stackoverflow.com/questions/2021114/javascript-jquery-variables-not-giving-expected-values,http://stackoverflow.com/questions/1092563/scope-of-variable-in-javascript-problem for其他人陷入同一陷阱。 – bobince 2010-09-14 15:26:11