将数据从第一个ajax传递到另一个

时间:2014-08-16 13:58:07

标签: javascript jquery ajax api

马上,我想道歉,我没有用这个发布代码。我正在开车从事一个项目而我没有互联网。我在很棒的堆栈交换应用程序上。

无论如何,我目前正在处理两个单独的API调用,我知道它们单独工作,但是我需要使用第一个调用中的数据传递给第二个调用,以便动态地使用第二个调用。原因是,第一个AJAX请求是调用Google的地理编码API来获取地址的纬度和经度。第二个需要纬度和经度作为URL参数。

我研究过使用jQuery $ .when和.then,但我无法弄清楚如何将数据从一个AJAX请求传递到另一个。我还尝试构建单独的函数并在另一个内部使用。

我想我的问题是,这是最有效的方法吗?如果是我如何传递数据。

旁注,jQuery中的响应现在很好用。我最终将把这个全部转换为Node,但我只是想先把方法放下来。

3 个答案:

答案 0 :(得分:1)

以下是使用$.post()的示例:

$.post("url_with_address", function(data){

    // process geocode API response

    $.post("url_with_lat_long", function(response){
    });
});

答案 1 :(得分:1)

您可以使用久经考验的异步实用程序库,例如async。这将为您的代码提供未来证明,因为它可以在浏览器和Node中使用。

在指定中,查看允许您将多个异步调用链接在一起的waterfall方法,如果您将来需要添加更多依赖异步调用,这将有助于您管理代码。 / p>

瀑布函数的结构如下。

async.waterfall([
    function(callback){
      $.post('http://google.com/api/...', data, callback);
    },
    function(results, callback){
      $.post('http://google.com/api/...', results, callback);
    }
  ], function (err, result) {
    // all done
});

如果你想使用jQuery,那么$.when实用程序将没有那么有用,因为它只在每个promise都已解决并且你想在此之前拦截数据时解析。

当然,最简单的方法是在第一个回调中发出第二个AJAX请求。但是,这是让你走上回调地狱道路的绝佳方式。

答案 2 :(得分:1)

如果我纠正你,你可以在第一个成功回调中调用第二个ajax请求,如下例所示

$.get('ur resource URL',function(data){
    $.get('new resource URL',{param1: data.param1, param2: data.prama2}, function(data2){
       console.log(data2);
    });
});