将来自 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 的数据显示到文本字段中