I'm trying to implement a select with ajax in laravel 5 I have the following situation.
A state model class
class Estados extends Model {
protected $table = 'estados';
public function cidades() {
return $this->hasMany( 'App\Models\Painel\Cidades', 'id_estado', 'id');
}
}
a city class model
class Cidades extends Model {
protected $table = 'cidades';
public function pessoaFisica() {
return $this->hasMany('App\Models\Painel\PessoaFisica');
}
public function estado() {
return $this->belongsTo ( 'App\Models\Painel\Estados', 'id_estados' );
}
}
Then I did the following in my view I made the following two selects and a js method.
<div class="form-group">
<label>Estado
<select name="estado" id="estado" class="form-control input-sm">
<option value="">Escolha o Estado</option>
@foreach($estados as $estado)
<option value="{{$estado->id}}">{{ $estado->uf }}</option>
@endforeach
</select>
</label>
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
<label>Cidade
<select id="cidade" class="form-control input-sm" name="cidade">
<option value=""></option>
</select>
</label>
</div>
</div>
Follow the js
<script>
$('#estado').on('change', function(e){
console.log(e);
var estado = e.target.value;
$.get('/estados?estado' + estado, function(data) {
$('#cidade').empty();
$.each(data, function(index,subcatObj){
$('#cidade').append('<option value="'+subcatObj.id+'">'+ subcatObj.nome </option>);
});
});
});
</script>
To populate my select state in my controller I did the following.
public function getAdicionar() {
$estados = Estados::all();
return view("painel.admin.adicionarpessoafisica", compact("estados"));
}
And last but not least I did the following in my route.
Route::get('/estados',function() {
$estado = Input::get('estado');
$cidades = Cidades::where('id_estado', '=', $estado)->get();
return Response::json($cidades);
});
The problem that is occurring is the following when trying to load the second select that depends on the first is not happening at all.