javascript - 如何将serializeArray更改为普通对象

标签 javascript laravel serialization multipleselection serializearray

我使用serializeArray来获取所有元素,并且我得到像

这样的对象
[{name: "code[1][barcode]", value: "45534"},
{name: "code[1][rf_id]", value: "535353"},
{name: "code[1][serialize]", value: ""},
{name: "code[2][barcode]", value: "45534"},
{name: "code[2][rf_id]", value: "535353"},
{name: "code[2][serialize]", value: ""},
{name: "custodian[]", value: "3"},
{name: "custodian[]", value: "4"},
{name: "custodian[]", value: "5"}]

我想这样转换

{
    code:[
            {barcode:"45534",rf_id:"535353",serialize:""},
            {barcode:"45534",rf_id:"535353",serialize:""}
        ],
    custodian: [3,4,5]
}

目前我正在使用这个脚本

var x = $('form#acquiredetail').serializeArray();
console.log(x);
var formData = {};
$.each(x, function(i, field){
    if(field.value.trim() != ""){
      formData[field.name] = field.value;
    }
});

并获取输出

虽然我能够正确获取 code 的值,但在后端/Laravel 中,但问题在于 custodian,我正在获取最后一个值,

custodian[]:"5"

我该如何解决这个问题。或者有更好的解决方案吗?

我的目标是使用简短且通用的代码将所有元素值传递给 php。请建议是否有任何替代方案

最佳答案

运行代码片段并享受吧:)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
var x = 
[{name: "code[1][barcode]", value: "45534"},
{name: "code[1][rf_id]", value: "535353"},
{name: "code[1][serialize]", value: ""},
{name: "code[2][barcode]", value: "45534"},
{name: "code[2][rf_id]", value: "535353"},
{name: "code[2][serialize]", value: ""},
{name: "custodian[]", value: "3"},
{name: "custodian[]", value: "4"},
{name: "custodian[]", value: "5"}];

   var formData = {};
    $.each(x, function(i, field){
    	if(field.value.trim() != ""){
    		if(formData[field.name] != undefined){
    			var val = formData[field.name];
    			if(!Array.isArray(val)){
    				 arr = [val];
    			}
    			arr.push(field.value.trim());
    			formData[field.name] = arr;
    		}else{
    		  formData[field.name] = field.value;
    		}
        }
    });
    console.log(formData );
    </script>

关于javascript - 如何将serializeArray更改为普通对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47591441/

相关文章:

javascript - jQuery: .toggle code atlernative 在第二次点击时不起作用

php - 让 Laravel 8 的 Validator 类在框架之外工作

c# - 如何将模型序列化为隐藏字段?

php - Laravel 将数据从一个表移动到另一个表并删除数据来自的列?

php - 在模态框搜索中显示搜索结果

c# - Xml序列化-集合属性

java - 为什么 Concurrent HashMap 是可序列化的

javascript - Chrome 扩展程序在内容脚本中弹出打开的事件监听器

javascript - Jasmine 测试中从未调用 AngularJS 指令的链接函数

javascript - 调用 watchLocation 时 div 不会更新