【问题标题】:Restrictions of Multiple AJAX Calls?多个 AJAX 调用的限制?
【发布时间】:2015-02-25 11:12:48
【问题描述】:

上下文: 我有一个javascript文件,在我有一个AJAX函数调用一个php文件返回数据并使用它执行一个函数(一个sql查询返回一个设定日期的记录,然后使用google maps API将它绘制在地图上)。让我们将此数据称为 A

问题: 我需要的是能够获取第二天的数据并将其存储在一个数组中(我们称之为数据 B)并将其与第一组数据(数据 A)进行比较。 据我了解,我需要在这个调用中进行另一个 ajax 调用,我试过了,但似乎我无法获取数据,我可能对 ajax 的核心工作有误解。例如:

var data_a;
var data_b;
    $.ajax({
         type: "POST",
         url: scriptday,
         data: $("#dayForm").serialize(),
         error: function( data ) {
              console.log("Error: "+ data );
         },
         success: function( json ) {
              data_a = json
                  //start of inner ajax call
                  $.ajax({
                           type: "POST",
                           url: scriptday2,
                           data: $("#dayForm").serialize(),
                           error: function( data ) {
                                console.log("Error: "+ data );
                           },
                           success: function( json ) {
                                data_b = json
                               // access data_a here
                           }
                       }    
                  });
                  //end of inner ajax call

        }    
    });

编辑: 这样做的正确方法是将内部 ajax 调用存储在一个包含 data_a 的函数中。

function innerAjax(data_a){
    $.ajax({
       .....
       //data_a can now be used here
    })
}

并在第一个 ajax 中调用它

innerAjax(data_a);

这种方式以同步方式使用 AJAX :) 感谢那些做出贡献的人!

【问题讨论】:

  • 第二个 AJAX 调用传递的参数与第一个相同。你说需要获取第二天的数据,所以需要发送不同的data:参数。
  • 为什么不创建一个 AJAX 调用来返回您需要的所有数据,而不是进行多次调用?
  • 我尝试通过在函数之前设置变量来访问 ajax 调用之外的数据,但是当我在下面打印出来时它是空的:/有什么想法吗?
  • 不能一键获取数据吗?您正在使用 Json,因此您可以轻松返回两个不同的数据集。 {"data-a": {"data": {....}}, "data-b": {"data": {....}}} 看起来像那样(这可能不对,但你明白了)。如果您确实需要 AJAX 调用,那么 Barmar 是对的。
  • 你没有调用两个不同的脚本。两人都在打电话给scriptday

标签: javascript php sql ajax


【解决方案1】:

不,不存在多个 AJAX 调用的限制,如果您使用异步 ajax(并且看起来确实如此)。

对于你的问题 - 也许你需要正确等待两个 ajax 调用的结果,存储结果然后处理它们。

【讨论】:

  • 所以在ajax调用之前设置变量并在完成后访问它?我想我必须把它放在成功函数中,因为在 ajax 调用之外访问完全不起作用。在函数产生空变量后打印 data_a/data_b :/
猜你喜欢
  • 1970-01-01
  • 2018-02-25
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 2011-05-21
  • 1970-01-01
  • 2011-02-04
相关资源
最近更新 更多