AJAX

Com os métodos AJAX do jQuery, pode-se solicitar texto, HTML, XML ou JSON a partir de um servidor remoto usando HTTP Get, Post, Put ou Delete – E pode-se carregar os dados externos diretamente para os elementos HTML selecionados.

Métodos de AJAX

O método load() carrega dados de um servidor e coloca os dados retornados para o elemento selecionado.

Sintaxe:

$(selector).load(URL,data,callback);

O parâmetro URL, obrigatório, especifica o URL do recurso que desejamos carregar.

O parâmetro opcional data especifica um conjunto de querystring pares chave / valor para enviar junto com o pedido.

O parâmetro opcional callback é o nome de uma função a ser executada após o método load() ter terminado.
A função de callback pode ter diferentes parâmetros:

  • responseTxt – contém o conteúdo resultante se a chamada sucesso
  • statusTxt – contém o status da chamada
  • xhr – contém o objeto XMLHttpRequest

Exemplo 1:

Considere-se o ficheiro, demo_test.txt, armazenado no servidor corrente, com o conteudo seguinte:

<h2>jQuery and AJAX is FUN!!!</h2> 
<p id="p1">This is some text in a paragraph.</p> 

O exemplo a seguir carrega o conteúdo do ficheiro “demo_test.txt” num elemento <div> específico, com o id “div1”:

$("#div1").load("demo_test.txt");

Exemplo 2:

Também é possível adicionar um selector jQuery no parâmetro de URL.

O exemplo a seguir carrega o conteúdo do elemento com id = “p1”, do ficheiro “demo_test.txt”, num elemento <div> específico: $("#div1").load("demo_test.txt #p1");

Exemplo 3:

O exemplo a seguir exibe uma caixa de alerta após o método load() estar concluído.

Se o método load() tiver êxito, ele exibe “conteúdo externo carregado com sucesso!”, se falhar, ele exibe uma mensagem de erro:

$("button").click(function(){ 
$("#div1").load("demo_test.txt",function(responseTxt,statusTxt,xhr){ 
   if(statusTxt=="success") 
      alert("External content loaded successfully!"); 
   if(statusTxt=="error") 
      alert("Error: " + xhr.status + ": "+xhr.statusText); 
 }); 
});

O método $.get() solicita dados do servidor com um pedido HTTP GET.

Sintaxe:

$.get(URL,callback);

O parâmetro URL, obrigatório, especifica o URL do recurso que deseja pedir.
O parâmetro callback, opcional, é o nome de uma função a ser executada, se o pedido for bem-sucedido. Esta função pode ter até 3 parâmetros opcionais, sendo o primeiro o conteúdo do recurso solicitado, o 2º o estado do pedido e o 3º o objecto XmlHttpRequest.

Exemplo 1:
Considere-se a seguinte página, demo_test.php, alojada no servidor corrente:

<?php 
echo("This is some text from an external PHP file.") 
?>

O exemplo a seguir usa o método $.get() para obter dados de um ficheiro no servidor:

$("button").click(function(){ 
   $.get("demo_test.php",function(data,status){ 
      alert("Data: " + data + "\nStatus: " + status); 
   }); 
}); 

O método $.post() solicita dados do servidor usando um pedido HTTP POST.

Sintaxe:

$.post(URL,data,callback);

O parâmetro URL, OBRIGATÓRIO, especifica o URL do recurso que pretendemos solicitar.
O parâmetro opcional data, especifica um conjunto de querystring pares chave / valor para enviar junto com o pedido.
O parâmetro callback opcional é o nome de uma função a ser executada, se o pedido for bem-sucedido.
O primeiro parâmetro da função de callback contém o conteúdo da página solicitada, e o segundo parâmetro o estado do pedido.

Exemplo:

O exemplo a seguir usa o método $.post () para enviar dados, para o servidor, que serão obtidos pelo script gravarPessoa.php juntamente com o pedido:

$("button").click(function(){ 
   $.post("gravarPessoa.php", 
   { 
      name:"Pato Donald", 
      city:"Donald City" 
   }, 
   function(data,status){ 
      alert("Data: " + data + "\nStatus: " + status); 
   }); 
}); 

O método ajax() é usado para executar um pedido AJAX assíncrono.

Todos os métodos de AJAX jQuery usam o método ajax(). Este método é usado principalmente para pedidos onde os outros métodos não podem ser usados.

Sintaxe:

$.ajax({name:value, name:value, … })

Parâmetros

ParâmetroValor/Descrição
asyncValor booleano que indica se o pedido é assíncrono ou não. Valor de defeito é true.
beforeSend(xhr)Uma função que é executada antes do pedido ser enviado.
cacheValor booleano que indica se o browser deve colocar as páginas pedias em cache. Valor de defeito é true.
complete(xhr,status)Uma função que é executada quando o pedido termina (após as funções success e error)
contentTypeO content type usado quando se envia dados para o servidor. Valor de defeito: “application/x-www-form-urlencoded”
contextEspecifica o valor de “this” para todas as funções callback  de AJAX relacionadas
dataDados a serem enviados para o servidor
dataFilter(data,type)Função usada para tartar os dados da resposta do XMLHttpRequest  
dataTypeO tipo de dados esperados na resposta do servidor.
error(xhr,status,error)Função que é executada quando o pedido falha.
globalValor booleano que especifica se  deve acionar tratadores de eventos globais do Ajax para o pedido. Valor de defeito é true.
ifModifiedValor booleano que especifica se um pedido só é bem sucedido se a resposta mudou desde o último pedido. Valor de defeito é false.
jsonpUma string que se sobrepõe à função de callback num pedido jsonp.
jsonpCallbackEspecifica o nome de uma função de callback num pedido jsonp.
methodEspecifica o tipo de pedido (GET, POST, PUT ou DELETE). Valor de defeito: GET.
passwordEspecifica uma password a ser usada num pedido HTTP de autenticação.
processDataValor booleano que especifica se os dados enviados no pedido devem ser transformados numa query string. Valor de defeito é true.
scriptCharsetEspecifica o charset para o pedido
success(result,status,xhr)Função a ser executada se o pedido fôr bem sucedido.
timeoutO timeout local (em milissegundos) para o pedido.
traditionalValor booleano que especifica se deve ou não usar o estilo tradicional de serialização de parâmetros
typeEspecifica o tipo de pedido (GET, POST, PUT ou DELETE). Esta propriedade é um alias da propriedade method e deve ser usada para as versões anteriores a 1.9.0. Valor de defeito: GET.
urlEspecifica o URL para onde o pedido é enviado. Valor de defeito é a página currente.
usernameEspecifica o username a ser usado no pedido de HTTP de acesso de autenticação
xhrFunção usada para criar o objecto XMLHttpRequest

Exemplo 1:

Faz um pedido GET para obter os dados do ficheiro “demo_test.txt” e mostra-os na div com o id “div1”.

$("button").click(function(){ 
   $.ajax({url: "demo_test.txt", success: function(result){ 
      $("#div1").html(result); 
   }}); 
});

Exemplo 2:

Faz um pedido GET para o url ‘/jquery/getjsondata’ obtem dados no formato JSON e mostra-os num elemento <p>.

$.ajax('/jquery/getjsondata',  
{ 
   dataType: 'json', // type of response data 
   timeout: 500,     
   // timeout milliseconds 
   success: function (data,status,xhr) {   
      // success callback function 
      $('p').append(data.firstName + ' ' + data.middleName + ' ' + data.lastName); 
   }, 
   error: function (jqXhr, textStatus, errorMessage) { // error callback  
      $('p').append('Error: ' + errorMessage); 
   } 
}); 

Exemplo 3:

Envia dados no formato JSON, num pedido POST para o url ‘http://localhost:1337/api/form’:

$('form').submit(function (e) {
  e.preventDefault();
  const data = {
    name: $('#name').val(),
    email: $('#email').val(),
  };

  $.ajax({
    type: 'POST',
    url: 'http://localhost:1337/api/form',
    data: JSON.stringify(data),
    contentType: 'application/json',
  })
    .done((data) => {
      console.log({ data });
    })
    .fail((err) => {
      console.error(err);
    })
    .always(() => {
      console.log('always called');
    });
});