【问题标题】:How to add data to an object?如何向对象添加数据?
【发布时间】:2016-11-18 17:18:28
【问题描述】:

我有一个 API,它可以接受单个数据或批量数据,然后相应地发送响应。在发送单个数据时,我正在发送如下数据,

var contactId = 123;
var url = "www.abc.com";
var companyName = "ABC";
var compLink = "/abc/123/link";
var randomKey = generateRandomKey();

   $.ajax({
       url:liurl,
       type:"POST",
       data:JSON.stringify({
           "verification_key":randomKey,
           "listData" :
               [{
               "contactid":contactId,
               "url": url,
               "li_company":companyName,
               "complink":compLink
           }]
       }),
       contentType:"application/json",
       dataType:"json",
       success: function(result){
           $.each(result, function(index, element) {
               //perform operation on 'result'
           });
       }
   });

上面的代码完美运行,我得到了适当的响应。现在,当我想一次验证多条记录时,listData 应该是这样的,

{
    "verification_key":"d0vvNl04dk3y",
    "listData" :
        [{
        "contactid":"241",
        "url":"http://www.name.com/in/daveandrews",
        "companyName":"Devious Media",
        "complink":"/company/devious-media"
    },
    {
        "contactid":"242",
        "url":"http://www.name.com/in/something",
        "companyName":"Sol Media",
        "complink":"/company/somemedia"
    },{
        "contactid":"243",
        "url":"http://www.name.com/in/daveandrews",
        "companyName":"Mega Media",
        "complink":"/company/xyzmedia"
    }]
}

如您所见,listData 包含多条记录的详细信息。而且我不知道如何将这些多个数据耦合到一个对象中并发送到 API。仅供参考,contactid, url, companyName and complink 的值存储在一个数组中。 例如:

var contactid = [1,2,3,4,5]
var companyName = ["abc","xyz","qwe","asd","zxc"];

【问题讨论】:

  • 您需要遍历第一个数组并使用循环的索引从第二个(或更多)数组中提取正确的值 - 这是假设它们将始终处于完美的顺序 - 有初学者看一下developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
  • “将这些多个数据耦合到一个对象中”是什么意思?因为重要的是,您的 API 期望什么?我认为它完全符合您在第二个代码块中显示的内容,但当然,我不知道。
  • 是的,API接受第二个代码块所示的数据

标签: jquery angularjs json


【解决方案1】:

您是在寻找聪明的东西,还是这么简单?我不认为有什么神奇的函数式方法可以解决这个问题,但也许其他人比我更聪明。

假设您的数组长度相同,如下所示:

let listData = [];

for (let i=0; i < contactid.length; i++) {
    listData.push({
        contactid: contactid[i],
        url: "http://www.name.com/in/something",
        li_companyName: companyName[i],
        complink: complink[i]
    });
}

(更新如何组装新请求)

如果 listData 格式正确,只需将其直接附加到您的请求中即可。

$.ajax({
   url:liurl,
   type:"POST",
   data:JSON.stringify({
       "verification_key":randomKey,
       "listData" : listData
   }),
   contentType:"application/json",
   dataType:"json",
   success: function(result){
       $.each(result, function(index, element) {
           //perform operation on 'result'
       });
   }

});

【讨论】:

  • 这与我正在寻找的非常相似,你能告诉我如何添加'verification_key',如我的第二个代码块所示。请记住,verification_key 只会添加一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
相关资源
最近更新 更多