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

Retornar varios valores em Ajax + Asp


Leandro_SM

Pergunta

Olá!

Esta é a minha primeira mensagem no forum e já estou pedindo ajuda...

Bom, sou programador ASP e estou tentando aprender Ajax, na net encontrei alguns exemplos e um deles consegui fazer funcionar, só que ele me retorna apenas um valor.

Gostaria de criar uma rotina para que o visitante coloque o CEP e o sistema retorne o endereço.

A rotina para pegar o endereço não vem ao caso, mas sim como eu vou passar/receber estes varios dados pelo ajax.

O codigo que estou usando é este (não consegui colocar o codigo no codebox, da erro 404...)

<script language="JavaScript">
    var ajax;
    
    function openAjax() {
    if (window.ActiveXObject){
        ajax = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if (window.XMLHttpRequest)
        {
        ajax = new XMLHttpRequest();
        }
    }

    function atualizar() {
    if (ajax.readyState==4) {
        document.getElementById('cep').value = ajax.responseText;
        }
    }

    function calcula() {
    url="action.asp?cepvai="+ document.getElementById('cepvai').value;
    ajax.open("GET",url,true);
    ajax.onreadystatechange= atualizar;
    ajax.send();
    }

</script>

Este script esta me retornando qualquer coisa que eu colocar na outra pagina em ASP, eu só tenho que saber como esta pagina em ASP deve passar os dados de volta para o JS e como eu tenho que receber os parametros no JS.

Não sei se me expressei bem, espero que alguém consiga me entender.

Forte abraço!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Bem vindo ao forum Leandro,

a um tempo atras montei um codigo que parece ser o que você está com duvida, veja se te ajuda: http://scriptbrasil.com.br/forum/index.php?showtopic=118798

é apenas um modo de fazer, voce pode melhorar conforme sua necessidade. Qualquer duvida, só postar ;)

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Andréia!

Obrigado pela ajuda!!

Bom, não consegui entender como receber os varios campos, JS ainda é grego para mim, estou lendo o livro "Java Script o guia definitivo" mas tem 800 paginas e vai demorar um pouco para eu dominar a linguagem...

Eu imaginava que conseguiria receber varios campos alterando apenas esta linha:

document.getElementById('cep').value = ajax.responseText;

Ou colocanco mais dela, exemplo:

document.getElementById('cep').value = ajax.responseText;

document.getElementById(rua).value = ajax.responseText;

document.getElementById(bairro).value = ajax.responseText;

Derrepente algo deste tipo:

document.getElementById('cep').value = ajax.responseText.("cep");

document.getElementById(rua).value = ajax.responseText.("rua");

Eu já testei uma dezena de combinações pois ainda não conheço a sintaxe certa, nenhuma chegou perto de funcionar...

Tem mais alguma dica?

Obrigado pela força!

Link para o comentário
Compartilhar em outros sites

  • 0

calma Leandro, cabelo é mais dificil de crescer do que o ajax pra entender.

o "ajax.responseText" retorna um valor (pelo menos q eu saiba rssss). O que acontece é assim, você tem a sua pagina mae (aquela principal) e você precisa processar uma pagina a parte sem usar submit, então entra o ajax. Voce passa variaveis para funcao do ajax, então o ajax vai la na pagina filho (aquela que você precisa processar à parte) e processa o que você quer. Esse processamento é em asp, ou qualquer linguagem que você estiver usando. Nesse arquivo filho, tudo que voce printar (response.write) é o que o ajax vai devolver à sua pagina mae, para aquela funcao do ajax que chamou a pagina filho.

Quando retorna, você precisa tratar o retorno pra usar na sua pagina (a pagina mae).

não sei se compliquei muito na explicação, mas não é dificil não.

Tem esse outro link: http://scriptbrasil.com.br/forum/index.php?showtopic=83196 que eu montei um exemplo, tem ate pra download. Acho que com algo pronto e funcionando voce consegue captar a ideia do funcionamento

Link para o comentário
Compartilhar em outros sites

  • 0

Andréia, obrigado pela força!

Como eu ainda estou no inicio do ajax/javascript, tudo parece muito complicado para mim, eu ainda não tenho capacidade de ver uma rotina e adaptar em outra...

Bom, vou dar mais detalhes do meu problema.

Eu realmente programo em ASP

A pagina filha, que faz o processamento separado tem apenas um response.Write "numerocep, nomedarua, bairro, cidade, estado"

São Strings mesmo e não variaveis...

meu ajax atualmente esta assim:

var campos = new Array(ajax.responseText);

document.getElementById('cep').value = campos[0]

document.getElementById('rua').value = campos[1]

document.getElementById('bairro').value = campos[2]

document.getElementById('cidade').value = campos[3]

document.getElementById('estado').value = campos[4]

Assim, os campos que eu passo aparecem apenas no campo[0]

Porem se eu fizer assim:

var campos = new Array(numerocep, nomedarua, bairro, cidade, estado);

document.getElementById('cep').value = campos[0]

document.getElementById('rua').value = campos[1]

document.getElementById('bairro').value = campos[2]

document.getElementById('cidade').value = campos[3]

document.getElementById('estado').value = campos[4]

Ai sim, cada campo aparece no local certo.

Ou seja, se eu montar o array na mão, ele funciona, mas quando eu monto ele com ajax.responseText que contem os campos, ele não funciona...

Aparece todosos campos de uma só vez no campo[0] e aparece Undefined nos outros.

Tenho certeza que não é dificil e alguém que conheça ajax mataria a charada de 1º, o problema sou eu que não consigo entender nada ainda...

Consegue ver o que eu estou fazendo errado?

Link para o comentário
Compartilhar em outros sites

  • 0

Chegou quase lá, veja:

//var campos = new Array(ajax.responseText);

var campos = ajax.responseText.split(",");

document.getElementById('cep').value = campos[0]
document.getElementById('rua').value = campos[1]
document.getElementById('bairro').value = campos[2]
document.getElementById('cidade').value = campos[3]
document.getElementById('estado').value = campos[4]

só um lembrete, use outro delimitar pois virgula pode ser usado em endereços e isso bagunçar teu array. Pegue algo que não é usado exemplo # |

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...