【发布时间】:2017-11-18 12:20:59
【问题描述】:
我正在使用 2 个端点:
- 位置 ID 列表
- 位置特定信息(此端点需要末尾第一个的 id)
第二个端点不包括位置 ID,但我需要它们成为位置信息的一部分。我想以某种方式将 id 注入位置信息,但我被卡住了。
我打电话来检索位置 ID:
ar settings1 = {
"async": true,
"crossDomain": true,
"url": "wss_api/wss_api.php?method=hello&format=json",
"dataType": "json",
"method": "GET"
};
var a1 = $.ajax(settings1);
var en = [];
var rt = [];
$.when(a1).done(function(d1) {
var d1p = JSON.parse(d1.data);
$.each( d1p.Entities, function(i, id) {
en.push({entity:id, url:"http://localhost/api_test/wss_api/locationdata.php?method=hello&format=json&entity=" + id});
});
makeMerge(en, d1p);
});
在这里,我将一个包含 id 和 url(最后的 id)的对象推送到“en”。我使用“en”和“d2”作为参数触发 makeMerge 函数。
在 makeMerge 函数中,我有一个用于 ajax 调用的函数,并执行一个 forloop 以将带有 url 和 id 的函数推送到“rt”。
function makeMerge(en_urls, en_id) {
function LocationData(d2, d3) {
return $.ajax({
"async": true,
"crossDomain": true,
"dataType": "json",
"url": d2,
"method": "GET"
});
}
for (url in en_urls) {
rt.push(LocationData(en_urls[url].url, en_urls[url].entity));
}
$.when.apply(this, rt).done(function () {
var ld = [];
for (var i = 0; i < arguments.length; i++) {
});
});
然后我执行 ajax 调用。
问题在于 id 从第一个 ajax 调用 (d1p.Entities) 到包含 id 和 url (en) 的对象到 makeMerge 函数的 forloop (en_urls[url].entity) 到LocationData 函数 (d3) 并停止。
我想将 id 分配给通过其相应 url 检索到的数据,从逻辑上讲,它应该在 LocationData 函数中完成这样的接缝,以便在触发 ajax 调用时,在继续之前分配当前正在使用的 id到下一个。我认为这是确保订单不混乱(分配给数据的 ID 错误)的最佳方式。
谁能想到解决办法?
【问题讨论】:
标签: jquery arrays ajax function