tutoriais mais recente desenvolvimento web
 

AJAX - Envia uma solicitação para um servidor


O objeto XMLHttpRequest é usado para trocar dados com um servidor.


Envia uma solicitação para um servidor

Para enviar um pedido a um servidor, usamos o open() e send() métodos do objeto XMLHttpRequest:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Método Descrição
open(method, url, async) Especifica o tipo de pedido

method : o tipo de solicitação: GET ou POST
url : o servidor (arquivo) localização
async : true (assíncrono) ou false (síncrono)
send() Envia o pedido para o servidor (usado para GET )
send(string) Envia o pedido para o servidor (usado para POST )

GET ou POST ?

GET é mais simples e mais rápido do que POST , e pode ser utilizado na maioria dos casos.

No entanto, sempre use POST solicitações quando:

  • Um arquivo em cache não é uma opção (atualizar um arquivo ou banco de dados no servidor).
  • O envio de uma grande quantidade de dados para o servidor ( POST não tem limitações de tamanho).
  • Envio de entrada do usuário (que pode conter caracteres desconhecidos), POST é mais robusto e seguro do que GET .

GET solicitações

Um simples GET pedido:

Exemplo

xhttp.open("GET", "demo_get.asp", true);
xhttp.send();
Tente você mesmo "

No exemplo acima, você pode obter um resultado em cache. Para evitar isso, adicione um único ID to the URL: ID to the URL:

Exemplo

xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
xhttp.send();
Tente você mesmo "

Se você deseja enviar esta informação com o GET método, adicione as informações para o URL:

Exemplo

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford", true);
xhttp.send();
Tente você mesmo "

POST pedidos

Um simples POST pedido:

Exemplo

xhttp.open("POST", "demo_post.asp", true);
xhttp.send();
Tente você mesmo "

Para POST de dados como um formulário HTML, adicione um HTTP header com setRequestHeader() . Especificar os dados que deseja enviar na send() método:

Exemplo

xhttp.open("POST", "ajax_test.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Tente você mesmo "

Método Descrição
setRequestHeader(header, value) Adiciona cabeçalhos HTTP para a solicitação

header : especifica o nome do cabeçalho
value : especifica o valor do cabeçalho

O url - Um arquivo em um servidor

O url parâmetro do open() método, é um endereço para um arquivo em um servidor:

xhttp.open("GET", "ajax_test.asp", true);

O arquivo pode ser qualquer tipo de arquivo, como .txt e .xml, ou arquivos de script de servidor como asp e php (que pode executar ações no servidor antes de enviar a resposta de volta).


Asynchronous - True ou False ?

AJAX está para Asynchronous JavaScript e XML, e para o objeto XMLHttpRequest para se comportar como AJAX, o async parâmetro do open() método tem de ser definida como true:

xhttp.open("GET", "ajax_test.asp", true);

Enviando solicitações assíncronas é uma grande melhoria para desenvolvedores web. Muitas das tarefas executadas no servidor são muito demorado. Antes de AJAX, esta operação pode causar o aplicativo para travar ou parar.

Com AJAX, o JavaScript não tem que esperar a resposta do servidor, mas pode:

  • executar outros scripts enquanto aguarda a resposta do servidor
  • lidar com a resposta quando a resposta pronta

Async=true

Ao usar class = "notranslate" async = true, especifique uma função a ser executada quando a resposta está pronto no evento onreadystatechange:

Exemplo

xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
    document.getElementById("demo").innerHTML = xhttp.responseText;
  }
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Tente você mesmo "

Você vai aprender mais sobre onreadystatechange em um capítulo posterior.


Async=false

Para usar async=false , altere o terceiro parâmetro na open() método para false:

xhttp.open("GET", "ajax_info.txt", false);

Usando async=false não é recomendado, mas para alguns pequenos pedidos este pode ser ok.

Lembre-se de que o JavaScript não vai continuar a executar, até que a resposta do servidor está pronto. Se o servidor estiver ocupado ou lenta, o aplicativo irá travar ou parar.

Nota: Quando você usa async=false , não escreva uma função onreadystatechange - basta colocar o código após o send() declaração:

Exemplo

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
Tente você mesmo "