Problem with function for popular cities according to chosen state, function change ()

1

I have the following function:

$(function(){
    $("#estadoPaciente").change(function() {
        var id = $(this).val();
        $.ajax({
            type: "POST",
            url: "../controller/ajax.selectCidades.php?id="+id,
            dataType: "text",
            success: function(res) {
                $("#cidadePaciente").append(res);
                $("#cidadePaciente").selectpicker('refresh');
            }
        });
    });
});

In PHP:

<?php
include_once 'controller.seguranca.php';
include_once 'controller.cidade.php';

$id_estado = $_GET['id'];

$cidade = new CidadeController();
$retornoCidade = $cidade->selectCidadePorEstado($id_estado);
if(count($retornoCidade) > 0)
{
    foreach ($retornoCidade as $dados => $value) 
    {       
        echo '<option value='.$retornoCidade[$dados]->id_GRcidade.'>'.utf8_encode($retornoCidade[$dados]->nome_GRcidade).'</option>';
    }
}
?>

This code is working, the problem is this:

If the user chooses, for example, the state of Bahia, the cities of the state of Bahia will appear in <select id="cidadePaciente> , but if he changes to the state of São Paulo, <select id="cidadePaciente> continues showing the cities of the state of Bahia. Bahia, even the user changing <select id="estadoPaciente> to the state of São Paulo. (The chosen states are just examples, the problem happens for any chosen state.)

    
asked by anonymous 17.09.2017 / 06:51

1 answer

2

You should change the line of your javascript:

$("#cidadePaciente").append(res);

To:

$("#cidadePaciente").html(res);

You should also make the following change in your PHP , create a variable ex: $html = "" below the variable $id_estado , then change the line:

echo '<option value='.$retornoCidade[$dados]->id_GRcidade.'>'.utf8_encode($retornoCidade[$dados]->nome_GRcidade).'</option>';

To:

$html .= '<option value='.$retornoCidade[$dados]->id_GRcidade.'>'.utf8_encode($retornoCidade[$dados]->nome_GRcidade).'</option>';

And out of foreach and still within if add:

echo $html;
    
17.09.2017 / 07:08