Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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...>
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
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