jQuery:将值数组推送到serializeArray中

3

我有以下这些内容:

<input class="orders" name="orders[]" value="1">
<input class="orders" name="orders[]" value="2">
<input class="orders" name="orders[]" value="3">

我尝试在JQUERY中将orders的值添加到serializeArray中。

我这样做:

var datastring = $("#form1").serializeArray();

var orders = [];
$('input.orders').each(function() {
       orders.push($(this).val()); 
 });
 datastring.push({name: "orders", value: orders});

在服务器端(当我将其转换为JSON格式时),我希望得到["1","2","3"]

但现在我只得到一个字符串:1,2,3

我尝试将其更改为:

datastring.push({name: "orders[]", value: orders});

现在,当我将它转换为JSON字符串(在服务器端)时,我得到了这个:
["1,2,3"]

请问您能告诉我我的错误吗?


["1","2","3"].join(',') - Ajay Narain Mathur
2个回答

4
你需要的是一个具有相同名称的对象数组。
var datastring = $("#form1").serializeArray();

$('input.orders').each(function() {
    datastring.push({name: this.name, value: this.value}); 
});

请确保您使用正确的类,去掉括号。
<input class="orders" name="orders[]" value="1">
<input class="orders" name="orders[]" value="2">
<input class="orders" name="orders[]" value="3">

这将为您提供一个类似于数组的结构。
[
    {
        "name": "orders[]",
        "value": "1"
    },
    {
        "name": "orders[]",
        "value": "2"
    },
    {
        "name": "orders[]",
        "value": "3"
    }
]

当提交表单时,jQuery将把该数组解析为字符串orders[]=1&orders[]=2&orders[]=3,这是大多数服务器端语言解析[]作为表单组时所期望的,每个元素都有一个键和一个值。


0

只需尝试将数组连接起来:

参考示例片段:

var datastring = [];
datastring.push({
  name: "orders",
  value: ['1', '2', '3'].join(',')
});
console.log(datastring[0]["value"])


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接