我有多个输入字段,可以使用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": "..."
}]
您会发现订单已保留。 (每个对象可能首先具有它们的
value
或title
,但是每个值和标题将一起使用。)