我想用用户定义的键和值创建一个动态数组。我已经尽力了,但找不到解决办法。
这就是我尝试过的:
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
发送。