我需要从循环 ajax 调用中为数据分配 id

Posted

技术标签:

【中文标题】我需要从循环 ajax 调用中为数据分配 id【英文标题】:I need to assign id to data from looping ajax call 【发布时间】: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 错误)的最佳方式。

谁能想到解决办法?

【问题讨论】:

【参考方案1】:

我在我的参数 for 循环中使用了一个 for 循环,该循环遍历 id 并在它的索引与参数的索引匹配时分配 id。

$.when.apply(this, rt).done(function () 

        var ld = [];

        for (var i = 0; i < arguments.length; i++) 

            datap = $.parseJSON(arguments[i][0].data);      

            for (url in en_urls)   

                if (url == i) 

                    datap.Location["Entity"] = en_urls[url].entity;

                

            ;

            values = datap.Location;

            ld.push(values);

        ;  

【讨论】:

以上是关于我需要从循环 ajax 调用中为数据分配 id的主要内容,如果未能解决你的问题,请参考以下文章

使用 ajax 调用填充文本字段

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

在 Jscript 中为 Q.all() 构建动态函数数组

iOS:如何在这种方法中为我的每个单元格分配一个标签?

在For循环中为点击功能分配JQuery

将数据数组从表单传递到 ajax 到 PHP 发布文件