Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取多个复选框及其父输入字段的值_Javascript_Html_Json_Laravel_Logic - Fatal编程技术网

Javascript 获取多个复选框及其父输入字段的值

Javascript 获取多个复选框及其父输入字段的值,javascript,html,json,laravel,logic,Javascript,Html,Json,Laravel,Logic,我想要一些建议或一个工作的情况下,我有。我正在构建一个访问管理系统,我必须为每个模块定义创建、读取、更新和删除权限。通过定义每个模块的权限,管理员将创建一个角色,稍后将分配给用户。我有大约14个模块,正如我前面提到的,每个模块有四个权限。我通过复选框获得每个权限的输入,因此我有几个复选框,其中父字段具有每个模块的id。下面是一些代码,可以更好地理解我想要实现的目标以及我的实现方法 HTML: <!-- Iteration loop starts here for rendering eac

我想要一些建议或一个工作的情况下,我有。我正在构建一个访问管理系统,我必须为每个模块定义创建、读取、更新和删除权限。通过定义每个模块的权限,管理员将创建一个角色,稍后将分配给用户。我有大约14个模块,正如我前面提到的,每个模块有四个权限。我通过复选框获得每个权限的输入,因此我有几个复选框,其中父字段具有每个模块的
id
。下面是一些代码,可以更好地理解我想要实现的目标以及我的实现方法

HTML:

<!-- Iteration loop starts here for rendering each module along with it's checkboxes -->
<tr>
    <th scope="row">{{$mod->m_name}}</th>
    <input type="hidden" name="module_id" value="{{$mod->m_id}}">
    <td><input type="checkbox" name="p_read" value="1"></td>
    <td><input type="checkbox" name="p_create" value="1"></td>
    <td><input type="checkbox" name="p_update" value="1"></td>
    <td><input type="checkbox" name="p_delete" value="1"></td>
</tr>
<!-- Loop ends here -->
var foo = $('#formAddRole').serializeArray();
var json = {"module" : []};

$.each(foo, (key, obj)=>{
    var arr = {
        "module_id" : 0,
        "permissions" : {
            "create" : 0,
            "read" : 0,
            "update" : 0,
            "delete" : 0,
        }
    };

    if(obj.name == "p_read"){
        arr.permissions.read = 1;
        json.module.push(arr);
    }
    // conditions for 'p_create', 'p_update', 'p_delete' goes here...

    if(obj.name == "module_id"){
        arr.module_id = obj.value;
        json.module.push(arr);
    }
});
{"modules" : [
    {
        "module_id" : 1,
        "permissions" : {
            "create" : 1, 
            "read" : 1,
            "update" : 1,
            "delete" : 0,
        }
    },
    {
        "module_id" : 2,
        "permissions" : {
            "create" : 0, 
            "read" : 1,
            "update" : 1,
            "delete" : 0,
        }
    },
    // so on...
 ]}
我要发送到服务器的JSON结构:

<!-- Iteration loop starts here for rendering each module along with it's checkboxes -->
<tr>
    <th scope="row">{{$mod->m_name}}</th>
    <input type="hidden" name="module_id" value="{{$mod->m_id}}">
    <td><input type="checkbox" name="p_read" value="1"></td>
    <td><input type="checkbox" name="p_create" value="1"></td>
    <td><input type="checkbox" name="p_update" value="1"></td>
    <td><input type="checkbox" name="p_delete" value="1"></td>
</tr>
<!-- Loop ends here -->
var foo = $('#formAddRole').serializeArray();
var json = {"module" : []};

$.each(foo, (key, obj)=>{
    var arr = {
        "module_id" : 0,
        "permissions" : {
            "create" : 0,
            "read" : 0,
            "update" : 0,
            "delete" : 0,
        }
    };

    if(obj.name == "p_read"){
        arr.permissions.read = 1;
        json.module.push(arr);
    }
    // conditions for 'p_create', 'p_update', 'p_delete' goes here...

    if(obj.name == "module_id"){
        arr.module_id = obj.value;
        json.module.push(arr);
    }
});
{"modules" : [
    {
        "module_id" : 1,
        "permissions" : {
            "create" : 1, 
            "read" : 1,
            "update" : 1,
            "delete" : 0,
        }
    },
    {
        "module_id" : 2,
        "permissions" : {
            "create" : 0, 
            "read" : 1,
            "update" : 1,
            "delete" : 0,
        }
    },
    // so on...
 ]}

我被困在这一点上了。我使用的逻辑对我来说并不完全有用。有什么更好的方法,我如何以最好的方式实现这一点?如有任何帮助或建议,将不胜感激。谢谢

如果您使用的是PHP,只需按照下面的代码重命名字段即可。不需要JavaScript

<tr>
    <th scope="row">{{$mod->m_name}}</th>
    <input type="hidden" name="modules[0][module_id]" value="{{$mod->m_id}}">
    <td><input type="checkbox" name="modules[0][permissions][p_read]" value="1"></td>
    <td><input type="checkbox" name="modules[0][permissions][p_create]" value="1"></td>
    <td><input type="checkbox" name="modules[0][permissions][p_update]" value="1"></td>
    <td><input type="checkbox" name="modules[0][permissions][p_delete]" value="1"></td>
</tr>
<tr>
    <th scope="row">{{$mod->m_name}}</th>
    <input type="hidden" name="modules[1][module_id]" value="{{$mod->m_id}}">
    <td><input type="checkbox" name="modules[1][permissions][p_read]" value="1"></td>
    <td><input type="checkbox" name="modules[1][permissions][p_create]" value="1"></td>
    <td><input type="checkbox" name="modules[1][permissions][p_update]" value="1"></td>
    <td><input type="checkbox" name="modules[1][permissions][p_delete]" value="1"></td>
</tr>

我正在使用laravel作为后端。但是我需要在通过ajax请求发送数据时使用js。在PHP中阅读
$\u GET['modules']
。我不理解你的问题。你在寻找更好的方法做什么?发送。。。解析。。。?你到底需要什么?很抱歉这个格式不好且不清楚的问题,我想问的是,在我显示的
json
输出中,获取和设置所有字段的数据的最佳方法是什么。你说得对,我可以将所有字段直接发送到php,让php处理所有的麻烦。为什么我没有想到这一点任何方式,请编辑您的答案,并包括您对社区的建议,以便我可以接受。