Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite galera, tenho um pequeno problema e preciso da ajuda de vocês.
Meu problema é chato até de explicar.
Montei uma pequena arquitetura (sem muita experiencia) seguindo MVC e ACHO que ficou boa. A minha duvida não é referente a arquitetura, mas sim uma maldita requisição ajax que não funciona. Comentei da arquiteura pois acho que o problema esta em como estou utilizando tudo. Para ficar mais claro vou exemplifica:
1) Pagina PHP - a minha view, onde estão dois combos e a instancia do meu controller.
2) Controller - o intermediario entre minhas paginas e services responsável por request e onde é instanciada minha Service.
3) Service - onde eu trato as informações passadas pelo controller e onde é instanciada minha DAO.
4) DAO - Classe somente com requisições de banco, insertes e etc(o SQL "puro");
Então minha pagina PHP esta assim:
Cadastro.php
<?
$antenaController = new AntenaController();
$nacionalidade= $antenaController->getNacionalidade();
if ($_GET["action"] == "buscaEstados"){
$antenaController->buscaEstados();
}
?>
<div class="linha">
<label class="labelPadrao">NACIONALIDADE:</label>
<?if(count($nacionalidade) > 0){?>
<select class="selectPadrao" id="nacionalidade" name="nacionalidade" onchange="javascript:carregaEstados();"><option/>
<?for($i = 0 ; $i < count($nacionalidade) ; $i++){ ?>
<option value='<?=$nacionalidade[$i]["id"]?>'><?$nacionalidade[$i]["nome"]?></option>
</select>
<?}?>
<?}?>
</div>
<div class="divLinha">
<label class="labelPadraoGrande">NATURALIDADE:</label>
<select class="selectPadraoUpper" id="naturalidade" name="naturalidade">
<option>Selecione um país</option>
</select>
</div>
Cadastro.js
Este é meu JavaScript, responsavel pelo onchange do select de nacionalidade:
function carregaEstados(){
$.getJSON('Cadastro.php?action=buscaEstados',{ idPais : $('#nacionalidade').val(), ajax: 'true'}, function(ret){
alert(ret);
var options = '';
if(ret != null){
options = '<option value=""></option>';
for(var i = 0; i < ret.length; i++){
options += '<option value="' + ret[i].id + '">' + ret[i].nome + '</option>';
}
} else {
options += '<option value="0">Sem registros</option>';
$('#naturalidade').html(options).show();
});
}
Controller.php
Este é o meu Controller, que se comunica com o Service que por sua vez se comunica com o DAO.
public function buscaEstados(){
return json_encode($this->residenciaService->buscaEstados($_REQUEST["idPais"]));
}
Não vou postar o restante do código pois acho que não é necessário. Meu Controller se comunica corretamente com o service que esta trazendo os resultados, digo isso pois pelo firebug mostra o resultado do json_enconde com as cidades corretas, mas não carrega no combo.
A impressão que eu tenho é que ele se perde no Controller e não retorna valor para meu JS. Digo isso pois eu coloquei um alert no retorno da minha chamada ajax e não vem valores, ou melhor, nem abre o alert(como se o código fosse interrompido antes de retornar.
Alguem sabe no que estou errando?
Agradeço antecipado
Me ajudem por favor!
Up! Help!!
Carregando comentários...