如何通过Ajax发送由一堆输入字段创建的数组?

时间:2017-12-13 14:37:36

标签: jquery arrays ajax dictionary

我想通过输入字段创建一个数组,并通过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'/>

但我认为我的数组未正确创建,因为我的警报测试未定义。

2 个答案:

答案 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");
            }
})