我想通过输入字段创建一个数组,并通过ajax发送此数组:
var map = {};
$(".data_list").each(function() {
map[$(this).attr("name")] = $(this).val();
});
alert(map.id);
data = map;
$.ajax({
url: "update.php",
data: {
data: data,
},
type: "POST",
success: function (data) {
alert("success");
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class='data_list' name='id[]" + "' type='text' value='24'/>
<input class='data_list' name='name[]" + "' type='text' value='test'/>
但我认为我的数组未正确创建,因为我的警报测试未定义。
答案 0 :(得分:1)
在要提交其值的表单控件上使用jQuery https://api.jquery.com/serialize/方法,并将结果作为data
参数传递。像
$.ajax({ data: $(".data_list").serialize(),
/* url: ... etc .*./ });
答案 1 :(得分:1)
首先,您的输入名称有一个额外的“+”。
其次,名称包含[],因此您需要像发送数据一样访问它,“{association array”,obj[attribute]
,它将包含[]
,您的服务器端将能够将其解析为数组
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class='data_list' name='id[]' type='text' value='24'/>
<input class='data_list' name='name[]' type='text' value='test'/>
var map = {};
$(".data_list").each(function() {
console.log($(this).attr("name"));
map[$(this).attr("name")] = $(this).val();
});
alert(map["id[]"]);
data = map;
$.ajax({
url: "update.php",
data: {
data: data,
},
type: "POST",
success: function (data) {
alert("success");
}
})