jQuery:在serializeArray

时间:2017-01-12 00:20:54

标签: javascript jquery

我有这些:

<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"]

请告诉我我的错误?

2 个答案:

答案 0 :(得分:2)

你想要的是一个具有相同名称的对象的数组

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,这就是大多数服务器端语言解析[]作为表单组所期望的,每个元素的键和值。< / p>

答案 1 :(得分:0)

尝试加入数组:

参考示例摘录:

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