依赖javascript的下拉列表无法正常工作

hlswsv35  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(305)

这是我第一次在这个网站上,所以我将削减追逐。
我一直在开发一个固定资产控制web系统,使用php、ajax、jquery和mysql作为数据库(项目结构是按照本网站的教程制作的:https://www.itechempires.com/2016/07/pdo-crud-operations-using-php-bootstrap/ ),其中这些项目与每项资产所属的类别一起登记,用户在公司内部进行的交易以及每笔交易生成的报告。
目前,我被下拉列表困住了,因为我尝试了任何我能让它们工作的方法,但是没有我一直在寻找的结果,那就是:在一个模式中,有一个表单,其中一个资产将被添加其相关信息,其中两个细节是类别和子类别,由相关的下拉列表处理,选择类别后,将显示有关子类别的下拉列表。
代码片段将进行审查,重点是与下拉列表相关的代码片段:
table
grupo(组或类别)
id\ grp(组id,自动递增,用户不可见)
codigo\ U grp(代码)
名称(名称)
subgeupo(子组或子类别)
id\u sgrp(子组id,自动递增,用户不可见)
codigo\ U sgrp(代码)
名称(名称)
使用寿命
id\u grp(组id,外键)
php:包含crud操作的所有查询

/* 
    * Get group's id and name
    *
    * @return $id_grp, $nombre_grp
    * */
    public function populateSelGrp()
    {
        $query = $this->db->prepare("SELECT id_grp, nombre_grp FROM grupo");
        $query->execute();
        $data = array();
        while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
            $data[] = $row;
        }
        return $data;
    }

    /* 
    * Get sub-group's id and name
    *
    * @return $id_grp, $nombre_grp
    * */
    public function populateSelSgrp($id_grp)
    {
        $query = $this->db->prepare("SELECT * FROM subgrupo WHERE id_grp = :id_grp");
        $query->bindParam("id_grp", $id_grp, PDO::PARAM_STR);
        $query->execute();
        $data = array();
        while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
            $data[] = $row;
        }
        return $data;
    }

populateselgrp.php:将类别加载到父下拉列表中

<?php

require 'libAF.php';

$data = "";

$object = new CRUD();

$grupos = $object->populateSelGrp();

$data .= '<select id="select_grp" class="form-control" onchange="populateSelSgrp()">';
$data .= '<option value="0" disabled selected>Escoja grupo</option>';    
if (count($grupos) > 0) {
    foreach ($grupos as $grupo) {
        $data .= '<option id="selected_grp" value="' . $grupo['id_grp'] . '"> ' . $grupo['nombre_grp'] . '</option>';
    }
}
else
{
    $data .= '<option>No hay opciones disponibles</option>';
}

$data .= '</select>';

echo $data;

?>

populateselsgrp.php:将子类别加载到子下拉列表中

<?php

require 'libAF.php';

if (isset($_POST['id_grp']) && isset($_POST['id_grp']) != "") {
    $id_grp = $_POST['id_grp'];
    $data = "";

    $object = new CRUD();

    $subgrupos = $object->populateSelSgrp($id_grp);

    $data .= '<label for="select_sgrp">Sub-grupo</label>';
    $data .= '<select id="select_sgrp" class="form-control">';
    $data .= '<option value="0" disabled selected>Escoja sub-grupo</option>';

    if (count($subgrupos) > 0) {
        foreach ($subgrupos as $subgrupo) {    
            $data .= '<option value="' . $subgrupo['id_sgrp'] . '"> ' . $subgrupo['nombre_sgrp'] . '</option>';
        }
    }
    else
    {
        $data .= '<option>No hay opciones disponibles</option>';        
    }

    $data .= '</select>';

    echo $data;
}

?>

js:包含使输入工作所需的脚本

function populateSelGrp(){        
$.get("ajax/activoFijo/populateSelGrp.php", {
},
    function (data, status) {
//load options to dropdown list
        $(".option_grp").html(data);
    }
);
}

function populateSelSgrp(id_grp){
$.ajax({
    url: "ajax/activoFijo/populateSelSgrp.php",
    method: "POST",
    data:{id_grp: id_grp},
    success:function(data){
        $(".option_sgrp").html(data);
    }
})            
}

activos.php(assets):用户添加、删除或更新资产的可见页面。

<div class="form-group">
     <label for="select_grp">Grupo</label>
     <div class="option_grp"></div>
 </div>         
 <div class="form-group">
      <div class="option_sgrp"></div>
 </div>
5rgfhyps

5rgfhyps1#

我终于找到了解决这个问题的方法,就是在javascript文件中添加一些代码,将id发送到第二个下拉列表中。虽然我终于解决了我的问题,但我想看看其他关于如何解决这个问题的建议。
这是我的片段
脚本.js

function populateSelGrp() {
$.get("ajax/activoFijo/populateSelGrp.php", {
},
    function (data, status) {
//load options to dropdown list
        $(".option_grp").html(data);
    }
);
}

function changeGrpId(){
var id_grp = document.getElementById("select_grp").value;
populateSelSgrp(id_grp);
}

function populateSelSgrp(id_grp) {
$.ajax({
    url: "ajax/activoFijo/populateSelSgrp.php",
    method: "POST",
    data:{id_grp: id_grp},
    success:function(data){
        $(".option_sgrp").html(data);
    }
})
}

相关问题