将来自 2 个 AJAX 调用的数据合并到一个数组中?

Posted

技术标签:

【中文标题】将来自 2 个 AJAX 调用的数据合并到一个数组中?【英文标题】:Combine data from 2 AJAX calls into one array? 【发布时间】:2016-04-08 19:53:10 【问题描述】:

该数组应用作此搜索框的自动完成建议:

<input type="text" class="searchbox" placeholder="Type here...">

我尝试合并 AJAX 调用,但出现以下错误:

Cannot read property 'slice' of undefined

Cannot read property 'length' of undefined

如果您知道如何正确构建它,请告诉我。

【问题讨论】:

都是在相同条件下的 ajax 调用,如果可以的话,它们可以在 php 结束时处理 您是否在寻找它们按顺序排列? Ajax 1 触发,然后一旦完成,ajax 2 触发? 所以一个打你的本地服务器,一个打远程api?对吗? 【参考方案1】:

你开始朝着正确的方向前进——你需要一个两个 AJAX 调用都可以访问的数组,但是你错误地修改了数组——你需要添加新元素,而不是重新分配整个数组,例如:

$.map(list, function(v,i) 
    results.push(
        label: v.Title + ' (' + v.Year + ')',
        value: v.Title
    );
);

另一个错误是在获取数据之前初始化自动完成插件 - 先准备数组,然后在所有异步任务(您的 AJAX 调用是异步任务)完成时初始化自动完成会更有意义。看这个例子:multiple ajax calls wait for last one to load, then execute

【讨论】:

你不应该再使用'response',它变得更简单了:$(".searchbox").autocomplete(source: results); 如果您检查 url 有 request.term 并且在代码中的任何地方都没有提到它 - 您需要用一些正确的单词或现有变量替换它。替换 var 结果;在顶部带有 var results = [];所以数组被初始化 - 这应该有帮助!

以上是关于将来自 2 个 AJAX 调用的数据合并到一个数组中?的主要内容,如果未能解决你的问题,请参考以下文章

将 KnockoutJS 可观察数组传递给 HTTP Post 控制器方法的 AJax 调用失败

将数据从 javascript forEach 循环中的 php 数组发送到 ajax 调用的 url

如何使用 AJAX 将来自 mysql 的数据显示到文本字段中

使用来自 jquery 数据表的 ajax 调用发送参数

如何动态地将数组添加到 react-bootstrap 表中?

合并来自不同粒度维度的数据