XMLHttpRequest do AJAX
- Página Anterior XMLHttp AJAX
- Próxima Página Resposta AJAX
O objeto XMLHttpRequest é usado para trocar dados com o servidor.
Enviar solicitação para o servidor
Para enviar solicitações para o servidor, usamos o objeto open()
e send()
método:
xhttp.open("GET", "ajax_info.txt", true); xhttp.send();
Método | Descrição |
---|---|
open(method, url, async) |
define o tipo da solicitação
|
send() | Enviar solicitação para o servidor (usado para GET) |
send(string) | Enviar solicitação para o servidor (usado para POST) |
GET ou POST?
GET é mais simples e mais rápido que POST, e pode ser usado na maioria das situações.
No entanto, sempre use POST nas seguintes situações:
- Os arquivos em cache não são uma opção (atualizar arquivos ou banco de dados no servidor)
- Enviar uma grande quantidade de dados para o servidor (POST não tem limite de tamanho)
- Enviar entrada do usuário (pode conter caracteres desconhecidos), POST é mais poderoso e seguro que GET
Solicitação GET
Uma solicitação GET simples:
Exemplo
xhttp.open("GET", "demo_get.asp", true); xhttp.send();
No exemplo acima, você pode obter um resultado em cache. Para evitar isso, adicione um ID único à URL:
Exemplo
xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true); xhttp.send();
Se você precisar enviar informações usando o método GET, adicione essas informações à URL:
Exemplo
xhttp.open("GET", "demo_get2.asp?fname=Bill&lname=Gates", true); xhttp.send();
Solicitação POST
Uma solicitação POST simples:
Exemplo
xhttp.open("POST", "demo_post.asp", true); xhttp.send();
Se você precisar enviar dados POST como um formulário HTML, por favor, faça isso através de setRequestHeader()
Adicione um cabeçalho HTTP. Por favor, no send()
O método especifica os dados que você precisa enviar:
Exemplo
xhttp.open("POST", "ajax_test.asp", true); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send("fname=Bill&lname=Gates");
Método | Descrição |
---|---|
setRequestHeader(header, value) |
Adicionar cabeçalhos HTTP à solicitação
|
url - Arquivo no servidor
Método open() url O parâmetro é o endereço do arquivo no servidor:
xhttp.open("GET", "ajax_test.asp", true);
Este arquivo pode ser de qualquer tipo, como .txt e .xml, ou arquivos de script do servidor, como .asp e .php (eles podem executar operações no servidor antes de enviar a resposta).
Assíncrono - true ou false?
Para enviar solicitações assíncronas:open()
método async O parâmetro deve ser definido como true
:
xhttp.open("GET", "ajax_test.asp", true);
O envio de solicitações assíncronas representa um grande avanço para os desenvolvedores web. Muitas tarefas executadas no servidor são muito demoradas. Antes do AJAX, essa operação poderia causar o congelamento ou parada do aplicativo.
Através de envio assíncrono, o JavaScript não precisa esperar pela resposta do servidor, em vez disso, pode:
- Executar outros scripts enquanto espera a resposta do servidor
- Tratar a resposta quando ela estiver pronta
Propriedade onreadystatechange
Através do objeto XMLHttpRequest, você pode definir a função a ser executada quando a solicitação receber uma resposta.
Esta função é executada no objeto XMLHttpResponse onreadystatechange
Definido nas propriedades:
Exemplo
xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = this.responseText; } }; xhttp.open("GET", "ajax_info.txt", true); xhttp.send();
Você aprenderá mais sobre onreadystatechange em capítulos posteriores.
Solicitação síncrona
Para executar solicitações síncronas, por favor, defina open()
O terceiro parâmetro do método é configurado para false
:
xhttp.open("GET", "ajax_info.txt", false);
Às vezes async = false é usado para testes rápidos. Você também verá solicitações síncronas em código JavaScript mais antigo.
Devido ao código esperar que o servidor seja concluído, não é necessário a função onreadystatechange:
Exemplo
xhttp.open("GET", "ajax_info.txt", false); xhttp.send(); document.getElementById("demo").innerHTML = xhttp.responseText;
Não recomendamos o XMLHttpRequest síncrono (async = false), pois o JavaScript parará de executar até que a resposta do servidor esteja pronta. Se o servidor estiver ocupado ou lento, o aplicativo pode ficar suspenso ou parar.
XMLHttpRequest síncrono está sendo removido dos padrões da Web, mas este processo pode levar muitos anos.
Ferramentas de desenvolvimento modernas são encorajadas a emitir alertas sobre a utilização de solicitações síncronas e, neste caso, pode ser lançada a exceção InvalidAccessError.
- Página Anterior XMLHttp AJAX
- Próxima Página Resposta AJAX