function getMore(from){
var initData = "&start-index=";
initData += from;
$.ajax({
type:"POST",
url: '', //removed the URL
data: initData,
dataType: 'json',
success: function(result) {
return result;
},
error: function(errorThrown) {
}
});
return result;
}
这是一个google基础查询;我有另一个功能,使初始服务器调用并获得前250个项目。然后我有一个运行计数器,只要结果= 250,它再次调用服务器,但从当前拉出的项目数量的“start-index =”开始。这部分都可以正常工作,并且使用firebug我也可以看到服务器响应是正确的JSON。
我遇到的麻烦是尝试将JSON从此函数返回到调用它的函数。我不想再次调用原始函数,因为它将清除已从服务器中提取的数据数组。每次返回父函数时它都为空。
有谁知道如何使用“返回”返回数据?
答案 0 :(得分:1)
function FuncionCallGetMore(){
//...
getMore('x-value', FuncionGetReturn);
//...
}
function FuncionGetReturn(error, value){
if (!error) {
// work value
}
}
function getMore(from, fn){
var initData = "&start-index=" + from;
$.ajax({
type:"POST",
url: '', //removed the URL
data: initData,
dataType: 'json',
success: function(result) {
fn(false, result);
},
error: function(errorThrown) {
fn(true);
}
});
return;
}
答案 1 :(得分:0)
你可以做你正在描述的唯一方法是使AJAX调用同步,你不想这样做,因为它会在发出请求时锁定UI线程,浏览器可能会冻结。没有人喜欢冷冻。
您要做的是使用回调。发布所涉及的其他功能的代码,以便我可以更好地了解正在发生的事情。但基本上,你想要做的是创建一个异步循环。
function listBuilder() {
var onError = function(response) {
// ...
};
var onSuccess = function(response) {
// Handle the items returned here
// There are more items to be had, get them and repeat
if ( response.length == 250 ) {
getMore(onSuccess, onError, 250);
}
};
getInitialSet(onSuccess, onError);
}
function getMore(onSuccess, onError, from) {
$.ajax({
type:"POST",
url: '', //removed the URL
data: "&start-index=" + from,
dataType: 'json',
success: onSuccess,
error: onError
});
}