如何将用户定义的键和值添加到数组中


How to add user defined key and values to array

我想用用户定义的键和值创建一个动态数组。我已经尽力了,但找不到解决办法。

这就是我尝试过的:

function demo1(form_no) {
  var post_data_array = [];
  var post_data_array2 = [];
  var array1 = ['abc', 'xyz'];
  $.each(array1, function(key, value) {
    var temp_value = $("#" + value + "_" + form_no).val();
    var temp_key = value + "_" + form_no;
    post_data_array.push({
      key2: temp_key,
      value2: temp_value
    });
  });
  $.each(post_data_array, function(index, value) {
    post_data_array2[value.key2] = value.value2;
  });
  .ajax({
    type: "post",
    data: {
      postdata121: post_data_array2
    },
    url: base_url + "/temp_function/" + form_no,
    success: function(result) {
      alert(result);
    }
  });
}

但是在给post_data_array2赋值之后,如果我提醒post_data_array2,我会得到一个空数组。

即使我试图在ajax函数中发布post_data_array2来在另一个页面中发布数据,我也会得到空的postdata。

我不知道发生了什么。

您似乎在说要使用array1中的值作为键。要执行此操作,请使用对象{}而不是数组[]

这也可以用更少的代码来实现:

function demo1(form_no) {
  var array1 = ['abc', 'xyz'];
  var data = {};
  $.each(array1, function(key, value) {
    var temp_key = value + "_" + form_no;
    data[temp_key] = $("#" + temp_key).val();
  });
  
  alert(JSON.stringify(data));
  $.ajax({
    type: "post",
    data: {
      postdata121: data
    },
    url: base_url + "/temp_function/" + form_no,
    success: function(result) {
      alert(result);
    }
  });
}
demo1(123);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id=abc_123 value=abcValue>
<input id=xyz_123 value=xyzValue>

现在,当我们在array1上循环时,我们使用每个成员在data对象中创建一个新的键/值对,该对通过$.ajax发送。