2010-07-30 106 views
0
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; 
} 

它的谷歌基地查询;我有另一个功能,使最初的服务器调用,并获得前250项。然后,我有一个运行计数器,只要结果= 250,它会再次调用服务器,但是从当前数量的项目的“start-index =”开始。这部分所有工作正常,并与萤火虫我也可以看到,服务器响应是正确的JSON。JQuery Ajax调用,返回值问题

我遇到的麻烦是试图从这个函数返回JSON到调用它的函数。我不想再次调用原始函数,因为它会清除已从服务器拉出的数据数组。每次它返回到父函数时它都是空的。

有谁知道我可以怎样去返回数据使用“返回”?

+0

你试图将数据推到当前的阵列? – Val 2010-07-30 20:17:50

+0

你可以发布其他涉及的功能吗? – 2010-07-30 20:29:55

回答

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 
    }); 
} 
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; 
}