我有多个输入字段,可以使用jquery进行序列化,然后使用AJAX调用将数据保存到SQL数据库中。当我序列化输入字段时,序列化的JSON数据的顺序如下所示:

[{
  "value1": [ "123", "111", "222", "333" ],
  "value2": [ "111", "222", "333", "444" ],
  "value3": [ "1111", "2222", "3333", "4444" ],
  "title1": [ "This is a title" ],
  "title2": [ "Another title" ]
}]


尽管我希望这样:

[
  { "value1": [ "123", "111", "222", "333" ] },
  { "title1": "This is a title" },
  { "value2": [ "111", "222", "333", "444" ] },
  { "title2": "Another title" },
  { "value3": [ "1111", "2222", "3333", "4444" ] }
]


序列化代码的行如下所示:

var inputVals = $(this).closest('.blockContent').find("select, textarea, input").serialize();


将数组编码为JSON格式的PHP代码:

parse_str($request->inputVals,$inputVals);
$inputVals = array($inputVals);
$inputVals = json_encode($inputVals);


序列化输入的示例:

<input name="value1[0]" value="{{ $jsonValues['value1'][0] }}" type="number">
<input name="value1[1]" value="{{ $jsonValues['value1'][1] }}" type="number">
<input name="title1" value="{{ $jsonValues['value1'] }}" type="text">


更新:

为了更好地表达我的问题,我如何从Jquery / javascript中使上面的输入字段变得像JSON结构,其格式可以按照我想要的上述JSON代码中的内容进行排序?

最佳答案

JavaScript(以及JSON)对象是无序的。两者之间几乎没有区别

[{
  "value1": [ "123", "111", "222", "333" ],
  "title1": [ "This is a title" ],
  "value2": [ "111", "222", "333", "444" ],
  "title2": [ "Another title" ],
  "value3": [ "1111", "2222", "3333", "4444" ]
}]




[{
  "title1": [ "This is a title" ],
  "value2": [ "111", "222", "333", "444" ],
  "value3": [ "1111", "2222", "3333", "4444" ]
  "value1": [ "123", "111", "222", "333" ],
  "title2": [ "Another title" ],
}]


但是,数组是有序的。如果您可以将数据结构更改为类似

[{
  "value1": [ "123", "111", "222", "333" ],
  "title1": [ "This is a title" ]
}, {
  "value2": [ "111", "222", "333", "444" ],
  "title2": [ "Another title" ]
}, {
  "value3": [ "1111", "2222", "3333", "4444" ],
  "title3": "..."
}]


您会发现订单已保留。 (每个对象可能首先具有它们的valuetitle,但是每个值和标题将一起使用。)

07-24 09:50
查看更多