在下拉列表上更新输入值选择更改ajax和json

时间:2015-07-03 22:00:31

标签: javascript php jquery ajax json

我正在使用PHP / MySQL数据库学习AJAX和JSON。我有这种情况:

我有4个下拉输入。它们都是从数据库中检索结果的依赖项(如过滤器)。在最后一个下拉列表中,我选择了汽车发动机(电机)。当我选择引擎时,我想通过AJAX beforeSend填充带有id的隐藏文本输入。这样我就可以将ID和POST一起发送给PHP。

我错过了什么?

这是我的PHP代码:

//$_POST = array_map('utf8_decode', $_POST);
if(isset($_POST)){
    include_once "config.php";
    $retorno = array();
    $retorno['status'] = 0;
    $retorno['conteudo'] = '';
    $_SESSION['tabela'] = ($_POST['opcao'] == "seguimento") ? $_POST['seguimento'] : $_SESSION['tabela'];
    if($_SESSION['tabela'] == '4 rodas'){
        $tabela = '4rodas';
    }elseif($_SESSION['tabela'] == '2 rodas'){
        $tabela = '2rodas';
    }elseif($_SESSION['tabela'] == 'Diesel'){
        $tabela = 'diesel';
    }elseif($_SESSION['tabela'] == 'Sonda'){
        $tabela = 'sonda';
    }
    switch($_POST['opcao']){
        case 'seguimento':
        //pego o fabricante
            $seguimento = strip_tags(trim(filter_input(INPUT_POST, 'seguimento', FILTER_SANITIZE_STRING)));
            $pegaFabricante = $pdo->prepare("SELECT * FROM `".$tabela."` GROUP BY `fabricante`");
            $pegaFabricante->execute();
            if($pegaFabricante->rowCount() == 0){
                $retorno['status'] = 0;
            }else{
                $retorno['status'] = 1;
                $retorno['conteudo'] .= '<option value="" selected>Selecione o fabricante</option>';
                while($fabricante = $pegaFabricante->fetchObject()){
                    $retorno['conteudo'] .= '<option value="'.$fabricante->fabricante.'">'.$fabricante->fabricante.'</option>';
                }
            }
        break;

        case 'fabricante':
        //pego o veiculo
            $seguimento = strip_tags(trim(filter_input(INPUT_POST, 'seguimento', FILTER_SANITIZE_STRING)));
            $fabricante = strip_tags(trim(filter_input(INPUT_POST, 'fabricante', FILTER_SANITIZE_STRING)));

                $pegaVeiculo = $pdo->prepare("SELECT * FROM `".$tabela."` WHERE `fabricante` = ? GROUP BY `modelo`");
                $pegaVeiculo->execute(array($fabricante));

            if($pegaVeiculo->rowCount() == 0){
                $retorno['status'] = 0;
            }else{
                $retorno['status'] = 1;
                $retorno['conteudo'] .= '<option value="" selected>Selecione o veículo</option>';
                while($veiculo = $pegaVeiculo->fetchObject()){
                    $retorno['conteudo'] .=  '<option value="'.$veiculo->modelo.'">'.$veiculo->modelo.'</option>';

                }
            }
        break;

        case 'veiculo':
        //pego o motor
            $seguimento = strip_tags(trim(filter_input(INPUT_POST, 'seguimento', FILTER_SANITIZE_STRING)));
            $fabricante = strip_tags(trim(filter_input(INPUT_POST, 'fabricante', FILTER_SANITIZE_STRING)));
            $veiculo    = strip_tags(trim(filter_input(INPUT_POST, 'veiculo', FILTER_SANITIZE_STRING)));

            $pegaMotor = $pdo->prepare("SELECT * FROM `".$tabela."` WHERE `fabricante` = ? AND `modelo` = ? GROUP BY `motor`");
            $pegaMotor->execute(array($fabricante, $veiculo));
            if($pegaMotor->rowCount() == 0){
                $retorno['status'] = 0;
            }else{
                $retorno['status'] = 1;
                $retorno['conteudo'] .= '<option value="" selected>Selecione o motor</option>';
                while($motor = $pegaMotor->fetchObject()){
                    $retorno['conteudo'] .= '<option value="'.$motor->motor.'">'.$motor->motor.'</option>';
                }
            }
        break;

        case 'motor':
        //retorna o que selecinou
            $seguimento = strip_tags(trim(filter_input(INPUT_POST, 'seguimento', FILTER_SANITIZE_STRING)));
            $fabricante = strip_tags(trim(filter_input(INPUT_POST, 'fabricante', FILTER_SANITIZE_STRING)));
            $veiculo = strip_tags(trim(filter_input(INPUT_POST, 'veiculo', FILTER_SANITIZE_STRING)));
            $motor = strip_tags(trim(filter_input(INPUT_POST, 'motor', FILTER_SANITIZE_STRING)));
            $processo = strip_tags(trim(filter_input(INPUT_POST, 'n_processo', FILTER_SANITIZE_STRING)));

            $pegaAutomovel = $pdo->prepare("SELECT * FROM `".$tabela."` WHERE `fabricante` = ? AND `modelo` = ? AND `motor` = ?");
            $pegaAutomovel->execute(array($fabricante, $veiculo, $motor));
            if($pegaAutomovel->rowCount() == 0){
                $retorno['status'] = 0;
            }else{
                $retorno['status'] = 1;

                if($seguimento == "4 rodas"):
                        $retorno['conteudo'] .= '<thead>';
                            $retorno['conteudo'] .= '<tr class="table">';
                                $retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza" valign="middle"><img src="images/veiculo.jpg"></td>';
                                $retorno['conteudo'] .= '<td rowspan="2" align="center"><img src="images/motor.jpg"></td>';
                                $retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza combustivel" style="background: #e7e7e9;"><img src="images/combustivel.jpg"></td>';
                                $retorno['conteudo'] .= '<td colspan="3" align="center" class="cinza" style="background: #ffcb05;"><img src="images/velas.jpg"></td>';
                                $retorno['conteudo'] .= '<td rowspan="2" align="center"><img src="images/gap.jpg"></td>';
                                $retorno['conteudo'] .= '<td colspan="2" align="center" style="background: black;"><img src="images/cabos.jpg"></td>';
                                $retorno['conteudo'] .= '<td colspan="2" align="center" style="background: #ffcb05;"><img src="images/bobina-igni.jpg"></td>';
                            $retorno['conteudo'] .= '</tr">';

                            $retorno['conteudo'] .= '<tr class="table">';
                                $retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
                                $retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #ec1d25;"><img src="images/ngk.jpg"></td>';
                                $retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #00a650;"><img src="images/ngk_green.jpg"></td>';
                                $retorno['conteudo'] .= '<td align="center" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
                                $retorno['conteudo'] .= '<td align="center" style="background: #ec1d25;"><img src="images/cabo.jpg"></td>';
                                $retorno['conteudo'] .= '<td align="center" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
                                $retorno['conteudo'] .= '<td align="center" style="background: #ec1d25;"><img src="images/bobina.jpg"></td>';
                            $retorno['conteudo'] .= '</tr">';


                        $retorno['conteudo'] .= '</thead>';
                    while($automovel = $pegaAutomovel->fetchObject()){

                        $retorno['conteudo'] .=  '<tr><td>'.$automovel->modelo.'</td><td>'.$automovel->motor.'</td>';
                        $retorno['conteudo'] .= '<td>'.$automovel->combustivel.'</td>';

                        $retorno['conteudo'] .= '<td>'.$automovel->ano_vela.'</td><td>'.$automovel->ngk.'</td><td>'.$automovel->ngk_green.'</td>';

                        $retorno['conteudo'] .= '<td>'.$automovel->gap.'</td>';

                        $retorno['conteudo'] .= '<td>'.$automovel->ano_cabo.'</td><td>'.$automovel->cabos_ngk.'</td>';
                        $retorno['conteudo'] .= '<td>'.$automovel->ano_bobina.'</td>';
                        $retorno['conteudo'] .= '<td>'.$automovel->bobina_ngk.'</td></tr>';
                    }

                    $retorno['conteudo'] .= '<thead>';
                        $retorno['conteudo'] .= '<tr class="table">';
                            $retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza" valign="middle"><img src="images/veiculo.jpg"></td>';
                            $retorno['conteudo'] .= '<td rowspan="2" align="center"><img src="images/motor.jpg"></td>';
                            $retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza combustivel" style="background: #e7e7e9;"><img src="images/combustivel.jpg"></td>';
                            $retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
                            $retorno['conteudo'] .= '<td rowspan="2" align="center"><img style="max-width:50px;"src="images/p_sensor.jpg"></td>';
                            $retorno['conteudo'] .= '<td rowspan="5" align="center" style="background: #73F822;"><img style="max-width:150px;" src="images/o_sensor.jpg"></td>';        
                        $retorno['conteudo'] .= '</tr">';
                    $retorno['conteudo'] .= '</thead>';

                    $pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE n_processo = '$processo'");
                    $pegaSonda->execute();

                    while($lnC = $pegaSonda->fetchObject()){
                        $retorno['conteudo'] .= '<tr>';
                            $retorno['conteudo'] .= '<td>'.$lnC->modelo.'</td>';
                            $retorno['conteudo'] .= '<td>'.$lnC->motor_versao.'</td>';
                            $retorno['conteudo'] .= '<td>'.$lnC->combustivel.'</td>';
                            $retorno['conteudo'] .= '<td>'.$lnC->ano_seox.'</td>';
                            $retorno['conteudo'] .= '<td>'.$lnC->posicao_sensor.'</td>';
                            $retorno['conteudo'] .= '<td>'.$lnC->codigo_sensor.'</td>';
                        $retorno['conteudo'] .= '</tr>';
                    }



                elseif($seguimento == '2 rodas'):
                    $retorno['conteudo'] .= '<thead>';
                        $retorno['conteudo'] .= '<tr class="table">';
                                $retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza" valign="middle"><img style="width: 120px;" src="images/cabem.jpg"></td>';
                                $retorno['conteudo'] .= '<td rowspan="2" align="center"><img style="width: 120px;" src="images/modelo.jpg"></td>';
                                $retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza combustivel" style="background: #e7e7e9;"><img src="images/combustivel.jpg"></td>';
                                $retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza combustivel" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
                                $retorno['conteudo'] .= '<td colspan="3" align="center" class="cinza" style="background: #ffcb05;"><img src="images/velas.jpg"></td>';
                                $retorno['conteudo'] .= '<td rowspan="2" align="center" style="background: #e7e7e9;"><img style="width: 100px;" src="images/terminais.jpg"></td>';


                            $retorno['conteudo'] .= '</tr">';

                            $retorno['conteudo'] .= '<tr class="table">';
                                $retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #ec1d25;"><img src="images/ngk.jpg"></td>';
                                $retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #e7e7e9;"><img style="width: 60px;" src="images/iridum.jpg"></td>';
                                $retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: white;"><img style="width: 80px;" src="images/luz.jpg"></td>';

                            $retorno['conteudo'] .= '</tr">';
                    $retorno['conteudo'] .= '</thead>';
                    while($automovel = $pegaAutomovel->fetchObject()){
                            $retorno['conteudo'] .= '<tr>';
                                $retorno['conteudo'] .= '<td>'.$automovel->motor.'</td>';
                                $retorno['conteudo'] .= '<td>'.$automovel->modelo.'</td>';
                                $retorno['conteudo'] .= '<td>'.$automovel->combustivel.'</td>';
                                $retorno['conteudo'] .= '<td>'.$automovel->ano_vela.'</td>';
                                $retorno['conteudo'] .= '<td>'.$automovel->ngk.'</td>';
                                $retorno['conteudo'] .= '<td>'.$automovel->ngk_iridium.'</td>';
                                $retorno['conteudo'] .= '<td>'.$automovel->gap.'</td>';
                                $retorno['conteudo'] .= '<td>'.$automovel->cabos_ngk.'</td>';
                            $retorno['conteudo'] .= '/<tr>';

                    }

                    elseif($seguimento == "Diesel"):
                        $retorno['conteudo'] .= '<thead>';
                            $retorno['conteudo'] .= '<tr class="table">';
                                $retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza" valign="middle"><img src="images/veiculo.jpg"></td>';
                                $retorno['conteudo'] .= '<td rowspan="2" align="center"><img src="images/motor.jpg"></td>';
                                $retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza combustivel" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
                                $retorno['conteudo'] .= '<td colspan="3" align="center" class="cinza" style="background: red;"><img style="width: 200px;" src="images/vela_aquecer.jpg"></td>';
                            $retorno['conteudo'] .= '</tr">';




                        $retorno['conteudo'] .= '</thead>';
                    while($automovel = $pegaAutomovel->fetchObject()){

                        $retorno['conteudo'] .=  '<tr><td>'.$automovel->modelo.'</td><td>'.$automovel->motor.'</td>';
                        $retorno['conteudo'] .= '<td>'.$automovel->ano_vela.'</td><td>'.$automovel->codigo_g.'</td><td></tr>';
                    }   
                endif;  
            }
        break;
    }

    echo json_encode($retorno);
}

这是我的AJAX代码:

$(function(){
    $('select[name=seguimento]').change(function(){
        var seguimento = $(this).val();
        $('select[name=fabricante]').html('<option value="" selected>Selecione o fabricante</option>');
        $('select[name=veiculo]').html('<option value="" selected>Selecione o veículo</option>');
        $('select[name=motor]').html('<option value="" selected>Selecione o Motor</option>');

        $.ajax({
            method: 'post',
            url: 'combo.php',
            data:{opcao: 'seguimento', seguimento: seguimento},
            dataType: 'json',
            beforeSend: function(){
                $('#status').html('Aguarde, buscando...');
                $('table#conteudo').html('');
            },
            success: function(retorno){
                if(retorno.status == 0){
                    $('#status').html('Não encontramos fabricantes!');
                    $('table#conteudo').html();
                }else{
                    $('#status').html('');
                    $('select[name=fabricante]').html(retorno.conteudo);
                }
            }
        });
    });

    $('select[name=fabricante]').change(function(){
        var fabricante = $(this).val();
        var seguimento = $('select[name=seguimento]').val();
        var motor = $('select[name=motor]').val();

        $.ajax({
            method: 'post',
            url: 'combo.php',
            data:{opcao: 'fabricante', fabricante: fabricante, seguimento: seguimento},
            dataType: 'json',
            beforeSend: function(){
                $('#status').html('Aguarde, buscando...');
                $('table#conteudo').html('');
            },
            success: function(retorno){
                if(retorno.status == 0){
                    $('#status').html('Não encontramos os veículos!');
                }else{
                    $('#status').html('');
                    $('select[name=veiculo]').html(retorno.conteudo);
                }
            }
        });
    });

    $('select[name=veiculo]').change(function(){
        var fabricante = $('select[name=fabricante]').val();
        var seguimento = $('select[name=seguimento]').val();
        var motor = $('select[name=motor]').val();
        var veiculo = $(this).val();
        $.ajax({
            method: 'post',
            url: 'combo.php',
            data:{opcao: 'veiculo', fabricante: fabricante, seguimento: seguimento, veiculo: veiculo},
            dataType: 'json',
            beforeSend: function(){
                $('#status').html('Aguarde, buscando...');
                $('table#conteudo').html('');
            },
            success: function(retorno){
                if(retorno.status == 0){
                    $('#status').html('Não encontramos os Motores!');
                }else{
                    $('#status').html('');
                    $('select[name=motor]').html(retorno.conteudo);
                }
            }
        });
    });

    $('select[name=motor]').change(function(){
        var fabricante = $('select[name=fabricante]').val();
        var seguimento = $('select[name=seguimento]').val();
        var veiculo = $('select[name=veiculo]').val();
        var motor = $(this).val();

        $.ajax({
            method: 'post',
            url: 'combo.php',
            data:{opcao: 'motor', fabricante: fabricante, seguimento: seguimento, veiculo: veiculo, motor: motor, n_processo: n_processo},
            dataType: 'json',
            beforeSend: function(){
                $('#status').html('Aguarde, buscando...');
            },
            success: function(retorno){
                $('#status').html('');
                $('table#conteudo').html(retorno.conteudo);
                $('input[name=n_processo]').val(n_processo.n_processo);
                console.log(n_processo)
            }
        });
    });
});

0 个答案:

没有答案