如何使数据覆盖结果变量?
var ajax = {
get : {
venues : function(search){
var results = "@";
$.getJSON("http://x.com/some.php?term="+search+"&callback=?",function(data){ results = data; });
return results;
}
}
};
最佳答案
数据
正在覆盖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);
});
};
关于javascript - js变量作用域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3710315/