Asynchronous Javascript and XML (AJaX)

Ajax, ou Asynchronous JavaScript and XML, é uma técnica de programação que permite atualizar partes específicas de uma página Web sem recarregar a página inteira. Isso é feito através do envio de requisições assíncronas para o servidor, permitindo que o navegador continue interagindo com o usuário enquanto aguarda a resposta do servidor.

Uma requisição assíncrona é uma requisição que é feita sem interromper o fluxo de execução do programa. Isso significa que o programa pode continuar executando outras tarefas enquanto aguarda a resposta do servidor, incluindo interagir com o usuário, atualizar a interface gráfica da página e/ou realizar outras requisições.

Em JavaScript, você pode usar o objeto XMLHttpRequest (XHR) para fazer requisições Ajax. Aqui está um exemplo básico de como fazer uma requisição Ajax para recuperar dados, normalmente em JSON (JavaScript Object Notation), de um servidor:

// Criando um objeto XMLHttpRequest
var xhr = new XMLHttpRequest();

// Configurando a requisição (método, URL, assincronismo)
xhr.open('GET', 'http://localhost/api/dados.json', true);

// Definindo a função a ser chamada quando a requisição for concluída
xhr.onload = function() {
  if (xhr.status >= 200 && xhr.status < 300) {
    // Convertendo a resposta para JSON (caso seja JSON)
    var response = JSON.parse(xhr.responseText);
    console.log(response); // Exibindo os dados recebidos
  } else {
    console.error('Erro ao carregar dados: ' + xhr.status);
  }
};

// Enviando a requisição
xhr.send();

Neste exemplo, usamos o método GET para recuperar dados da URL especificada de forma assíncrona. Quando a resposta é recebida, verificamos o status da resposta para garantir que a requisição foi bem-sucedida antes de processar os dados.

O método open() é usado para configurar a requisição, especificando o método HTTP (GET, POST, PUT, DELETE, etc.), a URL do servidor e se a requisição deve ser assíncrona ou não. O método send() é usado para enviar a requisição para o servidor.

Já a propriedade onload é usada para definir a função a ser chamada quando a requisição for concluída. Neste caso, verificamos o status da resposta para garantir que a requisição foi bem-sucedida antes de processar os dados.

O código de status HTTP 200 indica que a requisição foi bem-sucedida, enquanto os códigos de status 4xx e 5xx indicam erros na requisição. Se a requisição falhar, exibimos uma mensagem de erro no console.

Finalmente o método JSON.parse() é usado para converter a String de resposta em um objeto JavaScript, caso a resposta seja em JSON.

JSON (JavaScript Object Notation)

JSON (JavaScript Object Notation) é um formato de dados leve e fácil de ler que é amplamente utilizado para troca de dados entre sistemas. Ele é baseado na sintaxe de objetos JavaScript e é comumente usado para representar dados estruturados, como objetos e arrays, em uma forma que pode ser facilmente serializada e desserializada.

Aqui está um exemplo de um objeto JSON que representa um livro:

{
  "title": "JavaScript: The Good Parts",
  "author": "Douglas Crockford",
  "year": 2008
}

Neste exemplo, temos um objeto JSON com três propriedades: title, author e year, que representam o título, autor e ano de lançamento de um livro, respectivamente.

Para converter uma String JSON em um objeto JavaScript, você pode usar o método JSON.parse(), como mostrado no exemplo anterior. Da mesma forma, para converter um objeto JavaScript em uma String JSON, você pode usar o método JSON.stringify():

var book = {
  title: "JavaScript: The Good Parts",
  author: "Douglas Crockford",
  year: 2008
};

var json = JSON.stringify(book);
console.log(json); // Exibe a String JSON

Os arrays em JSON são representados por colchetes [], enquanto os objetos são representados por chaves {}. Por exemplo, aqui está um exemplo de um array JSON que contém uma lista de livros:

[
  {
    "title": "JavaScript: The Good Parts",
    "author": "Douglas Crockford",
    "year": 2008
  },
  {
    "title": "Eloquent JavaScript",
    "author": "Marijn Haverbeke",
    "year": 2011
  }
]

Neste exemplo, temos um array JSON com dois objetos que representam livros diferentes. Cada objeto contém as propriedades title, author e year, representando o título, autor e ano de lançamento de cada livro, respectivamente.

Fetch API

A Fetch API é uma interface moderna para fazer requisições assíncronas em JavaScript. Ela fornece uma maneira mais simples e poderosa de lidar com requisições Ajax em comparação com o objeto XMLHttpRequest.

Aqui está um exemplo de como fazer uma requisição usando a Fetch API:

fetch('http://localhost/api/dados.json')
  .then(response => {
    if (!response.ok) {
      throw new Error('Erro ao carregar dados: ' + response.status);
    }
    return response.json();
  })
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });

Neste exemplo, usamos a função fetch() para fazer uma requisição GET para a URL especificada. A função fetch() retorna uma Promise que resolve para o objeto Response representando a resposta da requisição.

Usamos o método then() para processar a resposta da requisição. Dentro da função de callback passada para o método then(), verificamos se a resposta foi bem-sucedida (status 200) e, em seguida, chamamos o método json() para converter a resposta em um objeto JavaScript. Se a requisição falhar, a Promise é rejeitada e o método catch() é chamado para lidar com o erro.

A Fetch API é mais moderna e fácil de usar do que o objeto XMLHttpRequest e fornece uma maneira mais limpa e concisa de fazer requisições assíncronas em JavaScript.

Nota: A Fetch API trabalha por meio de uma Promise, que é um objeto que representa o resultado de uma operação assíncrona. As Promises são uma maneira de lidar com operações assíncronas de forma mais limpa e concisa em JavaScript. Assim, primeiro entenda o conceito de Promises para poder trabalhar com a Fetch API.

Para fazer mesma requisição anterior, mas com o método POST, você pode fazer algo assim:

fetch('http://localhost/api/dados.json', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ key: 'value' })
})
  .then(response => {
    if (!response.ok) {
      throw new Error('Erro ao carregar dados: ' + response.status);
    }
    return response.json();
  })
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });

Neste exemplo, usamos o método fetch() para fazer uma requisição POST para a URL especificada. Passamos um objeto de configuração como segundo argumento para o método fetch(), que contém as opções da requisição, incluindo o método HTTP (POST), os cabeçalhos da requisição (Content-Type) e o corpo da requisição (JSON.stringify({ key: ‘value’ })).

Referências

Rodrigo Prestes Machado
CC BY 4.0 DEED

Copyright © 2024 RPM Hub. Distributed by CC-BY-4.0 license.