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 Bruno123
      Olá, estou com uma dúvida na hora  de retornar se o número é primo ou não, poderiam me ajudar por gentileza ? Obrigado !
      <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title></title> </head> <body> <script src="javascript.js"></script> </body> </html> 'use strict' let num = prompt("Insira um número:"); let c = 0; for (i = 1; i <= num; i++) { if (num % i == 0) { c++; } } if (c == 2) { alert ("É PRIMO") } else { alert("NÃO É PRIMO") }  
    • Por user32
      Olá pessoal,
      sempre fui um curioso na programação e agora estou começando entender o javascript.
       
      edit:
      como eu consiguiria fazer a variavel buscar alem de 9... como numeros como 10-20, 20-30 ?
      toda ajuda é bem vinda, desde já agradeço
       
       
      <script type="text/javascript"> function funcao1() { var num1 = Number(document.getElementById("num1").value); var elemResult = document.getElementById("total"); var d90 = /[0-3]/; var d80 = /[4-5]/; var d70 = /[6-9]/; if (d90.test(num1)) { elemResult.innerText = String(num1 * "1") + "."; } else if (d80.test(num1)) { elemResult.innerText = String(num1 * "2") + "."; } else if (d70.test(num1)) { elemResult.innerText = String(num1 * "3") + "."; } else { // IE elemResult.innerText = String(num1 * "5") + "."; } } </script>  
    • Por clickanapolis
      Bom dia, no meu site coloquei ao clicar no link ele vai para uma div dentro da propria pagina, visto que a mesma e uma unica pagina.
       
      O problema é que quando clica no link ele esta parando fora do inicio da div, o que devo fazer?
       
      <script type="text/javascript"> jQuery(document).ready(function ($) { $(".scroll").click(function (event) { event.preventDefault(); $('html,body').animate({ scrollTop: $(this.hash).offset().top }, 1000); }); }); </script> e chamo o link assim:
       
      <li><a href="#acimetech" class="scroll">A Cimetech</a></li>  
    • Por Kelven
      Galera to enfrentando um problema, no meu tumblr to querendo colocar o popup de newsletter do Mailchimp, até ai tudo bem, é pra funcionar que nem no script abaixo, porém esse script só funciona se eu excluir aquela parte que está marcada, porém se eu excluir ela o tema do tumblr não funciona como deveria em celulares. Alguém sabe me dizer que tipo de conflito é esse e como posso resolver???
      <script type='text/javascript' src='http://space.fitterbiz.com/wp-includes/js/wp-embed.min.js?ver=4.9.10'></script> <script type="text/javascript" src="//downloads.mailchimp.com/js/signup-forms/popup/embed.js" data-dojo-config="usePlainJson: true, isDebug: false"></script> <script> function showMailingPopUp() { require( ["mojo/signup-forms/Loader"], function(L) { L.start({"baseUrl":"mc.us14.list-manage.com","uuid":"7f359a9e538573b27c9e39820","lid":"e64535f817"}) } ); document.cookie = 'MCPopupClosed=;path=/;expires=Thu, 01 Jan 1970 00:00:00 UTC;'; document.cookie = 'MCPopupSubscribed=;path=/;expires=Thu, 01 Jan 1970 00:00:00 UTC;'; } document.getElementById("open-popup").onclick = function() {showMailingPopUp()}; </script> <a onclick="showMailingPopUp(); return false;" id="open-popup" style="cursor:pointer">Subscribe!</a> <!-- quando coloco isso não funciona --> <script src="https://static.tumblr.com/xlsgtjb/mt5o305mz/scripts.min.js" charset="UTF-8"></script> <!-- quando coloco isso não funciona -->
    • Por Kelven
      Olá pessoal tudo bem?
       
      Então eu quero colocar um formulário de newsletter em um servidor q não tem suporte para php, o negócio é q depois que a pessoa clica em se cadastrar eu quero que ela seja redirecionada para outro site, então gostaria de saber como posso estar fazendo isso usando apenas javascript, jquery ou ajax com o API do Mailchimp? Porque já procurei muito e não achei, só achei em php.
×

Informação importante

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