Ir para conteúdo
tiagosp

Ajuda com XMLHttpRequest

Recommended Posts

Estou tentando enviar uma solicitação ao web servirço do Correios, porém não consigo obter a resposta.

var cep = document.getElementById("cep").value;
var doc = "http://cep.republicavirtual.com.br/web_cep.php?cep=" + cep + "&formato=xml"
var xhttp = new XMLHttpRequest();
xhttp.open("GET", doc, false);
xhttp.send();

O parametro cep é passado pela url, logo imagino que o método seja GET, deixei o terceiro parametro como false, pois estou apenas testando e não conheço nada de javascript, sei que quando esse parametro é true, é preciso checar quando chega a resposta.

Por fim, o xhttp.response não retorna nada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O terceiro parâmetro quando false indica que a requisição é síncrona. Ou seja, falando de forma mais simples... enquanto não houver resposta levando o tempo que for o resto do código é travado. E isso não é muito legal pois atrapalha a iteratividade do usuário com a página.

 

É sempre aconselhável para boas práticas somente usar requisições assíncronas passando o terceiro parâmetro como true.

Mais informações em: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests

 

Faça os seguintes testes logo após o xhttp.send();

console.log(xhttp.status);

Se a resposta for 404 é porque o endereço url está errado ou não existe.

Se a resposta for 500 é porque o endereço que acessou está com erros. Ou não pode se comunicar a sua requisição.

Depois modifique o teste para:

console.log(xhttp.readyState);

Esse teste pode demorar a responder pois vai checar como anda a comunicação do endereço acessado.

 

Enfim, no primeiro teste deve responder como 200 e o segundo como 4.

Caso não pode ser que o endereço acessado pode ser protegido pelo servidor de acessos externos, ou o mesmo não recebe parâmetros via GET, até mesmo o que você pode está enviando via get esteja bloqueado de acesso pelo arquivo web_cep.php.

 

Por fim, como você está pegando a resposta da requisição? Isso era uma informação muito importante, pois pode ser que o problema está justamente na forma que você obtêm a resposta da requisição.

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, Omar~ disse:

O terceiro parâmetro quando false indica que a requisição é síncrona. Ou seja, falando de forma mais simples... enquanto não houver resposta levando o tempo que for o resto do código é travado. E isso não é muito legal pois atrapalha a iteratividade do usuário com a página.

 

É sempre aconselhável para boas práticas somente usar requisições assíncronas passando o terceiro parâmetro como true.

Mais informações em: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests

 

Faça os seguintes testes logo após o xhttp.send();

console.log(xhttp.status);

Se a resposta for 404 é porque o endereço url está errado ou não existe.

Se a resposta for 500 é porque o endereço que acessou está com erros. Ou não pode se comunicar a sua requisição.

Depois modifique o teste para:

console.log(xhttp.readyState);

Esse teste pode demorar a responder pois vai checar como anda a comunicação do endereço acessado.

 

Enfim, no primeiro teste deve responder como 200 e o segundo como 4.

Caso não pode ser que o endereço acessado pode ser protegido pelo servidor de acessos externos, ou o mesmo não recebe parâmetros via GET, até mesmo o que você pode está enviando via get esteja bloqueado de acesso pelo arquivo web_cep.php.

 

Por fim, como você está pegando a resposta da requisição? Isso era uma informação muito importante, pois pode ser que o problema está justamente na forma que você obtêm a resposta da requisição.

xhttp.response deveria retornar algo correto? Tentei xhttp.response.length e recebo 0 (zero), acho que nada está voltando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Luiz Fernando 111
      Caros amigos, estou tentando adicionar soma entre inputs do html e do javascript, mas com esse exemplo, apenas consegui colocar no input do html. Como faço para implementar no input do javascript e somar o valor junto com o Valor Total mostrar lucro quando foi debito e prejuizo quando for crédito ? Alguém poderia me dá help !!!
       
       

    • Por Bobrinha
      Olá a todos.
       
      Tenho uma dúvida e não sei se é possível caso tenha alguma sugestão por favor avise.
       
      Adicionar resultado de um innerhtml dentro de um link atributo href é possível? ou seja eu tenho um input onde seleciono um ano 
       
      <select id="ano"> <option selected>2019</option> <option value="2018">2018</option> <option value="2017">2017</option> </select> <div id="anoAtual"></div> No query pego o valor ou seja o ano selecionado e jogo no html
       
      $("select").change(function () { document.getElementById("ano").innerHTML = document.getElementById("anoAtual").value; });  
      Agora vem a dúvida como eu jogo na URL? existe uma outra forma? é possível?
       
      <a href='resultado.php&ano=COMO JOGAR O ANO AQUI?'>  
       
    • Por LuanMartinsTI
      Eu tenho o seguinte codigo para capturar minha camera e meu audio, toda vez que eu entro na pagina x ela executa o js e pede acesso a camera de quem acessa a pagina, porem eu vou bloquear essa pagina para que apenas eu ou pessoa autorizadas possam acessar, queria saber o seguinte, eu sei capturar o video e audio, mas como eu vou mostrar pro usuario o meu video e o meu audio??
      <script> video = document.createElement('video'); video.width = 320; video.height = 240; video.autoplay = true; var hasUserMedia = navigator.webkitGetUserMedia ? true : false; navigator.webkitGetUserMedia('video', function(stream){ video.src = webkitURL.createObjectURL(stream); }, function(error){ console.log("Navegador nao suporta", error); }); </script>  
    • Por martinazzo
      não consigo apagar, então deixei assim... se alguém conseguir por favor
    • Por rd111072
      Olá! Preciso pegar o valor de uma variável javascript, postar para uma página php pra criar uma variável session php.
      aqui tento passaar a variável js:
       
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script type="text/javascript"> var valor = ""; $(document).ready(function() { $('input:radio[name=aviso]').click(function() { //Executa Loop entre todas as Radio buttons com o name de valor $('input:radio[name=aviso]').each(function() { //Verifica qual está selecionado if ($(this).is(':checked')) valor = parseInt($(this).val()); }) alert(valor); $.post( "cria_session.php", { aviso: valor} ); }) }) </script> Aqui tento, ao menos, imprimir na tela:
      <? echo "Olá <script>document.write(valor)</script>"?> Só o que funciona é o alert ^^^.

      Alguém sabe?
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.