Ir para conteúdo
Fórum Script Brasil
  • 0

Combobox Dinamico


weslley clyton

Pergunta

Fala ai pessoal..

Tenho agora um novo problema.. não é duvida porque eu não tenho a minima ideia de omo faser.. só sei que da pra faser com ajax..

seguinte antes de vir alguém dizendo que já esplicaram.. eu já pesquisei mas não encontrei o que eu precizo..

tipo;... tenho um cadastro de cliente e nesse cadastro tem que escolher uma cidade... se o usuario que vai cadastrar o cliente não encontra a cidade que ele preiza no com , ele clica em um botão que vai abrir uma janela filha com o cadastro de cidade, ele cadastra a cidade e beleza, fecha a janela filha. mas o combo da janela pai continua sem a cidade porque para atualizar o combo preciza-se dar um refresh na pagina.. precizo que este combo se atualize sem o refresh...

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Como você falou, nesse caso você vai precisar de AJAX. Se não tiver conhecimento, recomendo olhar os links sobre o assunto no tópico Lista de Cursos para a linguagem JavaScript, mais precisamente esse aqui: Curso Básico de Ajax (tableless.com.br)

Você vai precisar de uma página que escreva a lista de cidades vindas do banco para que possa requisitar essa página e obter os dados.

O código ficaria mais ou menos assim:

function AtualizaLista() {
    //Cria o objeto XMLHTTP
    var xmlhttp
    try {
        xmlhttp = new XMLHttpRequest()
    } catch (ee) {
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP")
        } catch (e) {
            try {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
            } catch (E) {
                xmlhttp = false;
            }
        }
    }
    //Verifica se houve sucesso
    if (!xmlhttp) {
        return; //O navegador não suporta AJAX
    }
    //Cria a requisição
    xmlhttp.open("GET", "pagina_que_lista_cidades.php", true)
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) {
            //retorno
            var retorno = xmlhttp.responseText
            var arr = retorno.split("\n") //gera um array separando o retorno por quebras de linha (\n)
            //gera um array separando o ID da cidade e seu nome
            var cidades = new Array()
            for (var i = 0; i < arr.length; i++) {
                //separa o ID do nome por um hífen (-)
                var aux = arr[i].indexOf("-")
                //adiciona uma posição no nosso array de cidades
                cidades[i] = new Array()
                //preenchemos com os valores
                cidades[i]["id"] = arr[i].substr(0, aux)
                cidades[i]["nome"] = arr[i].substr(aux + 1, arr[i].length)
            }
            //pega o combobox que lista as cidades
            var cboCidades = document.getElementById("id_do_combo")
            //limpa as cidades do combo
            cboCidades.innerHTML = ""
            //percorre as cidades e as inclui no combo
            for (var i = 0; i < cidades.length; i++) {
                //cria um novo elemento <option>
                var novaCidade = document.createElement("option")
                //atribui valor e texto ao elemento
                novaCidade.value = cidades[i]["id"]
                novaCidade.innerHTML = cidades[i]["nome"]
                //aplica o elemento como um filho do cboCidades
                cboCidades.appendChild(novaCidade)
            }
        }
    }
    //Envia a requisição
    xmlhttp.send();
}

Recomendo que não utilize essa função para substituir o código HTML que o PHP imprime na página referente à lista de cidades, e sim que use o código como um complemento para atualizar os dados. Dessa forma, o usuário terá acesso às funcionalidades básicas (utilizar a lista de cidades, sem alterá-la) mesmo utilizando um navegador sem suporte a Javascript ou AJAX.

Se desejar, pode também utilizar bibliotecas que facilitem o trabalho com AJAX. Aqui mesmo no Repositório de Scripts você encontra algumas classes (uma delas minha e a outra do Eduardo).

Poste aí se funcionou.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...