Cursos / Informática para Internet / Desenvolvimento Web II / Aula
O ponto chave para enviar e receber informações do servidor de forma assíncrona e sem precisar recarregar a página inteira é o objeto XMLHttpRequest definido pelo World Wide Web Consortium (W3C) em <http://www.w3.org/TR/XMLHttpRequest/>. Esse objeto tem uma API simples que será o foco desta seção.
Para melhor entendimento, após ler cada item abaixo, volte ao código do segundo exemplo e veja onde o mesmo se encontra.
Logo quando o AJAX começou a ser utilizado, não existia uma API padrão para enviar e receber dados do servidor de forma assíncrona. Visando padronizar e garantir a portabilidade das aplicações web entre os vários navegadores existentes, a W3C definiu uma classe chamada XMLHttpRequest. Essa classe está implementada nos principais (se não todos) navegadores comerciais e contempla as necessidades para a conversação assíncrona com o servidor.
Para obter uma instância do objeto XMLHttpRequest, basta chamar seu construtor:
Na grande maioria dos casos, é desejável tratar as respostas das requisições enviadas ao servidor (uma exceção seria o envio de um aviso ao servidor, cujo recebimento e processamento não influencia no lado cliente). Para tal, o primeiro passo é associar uma função ao atributo “onreadystatechange” do objeto XMLHttpRequest criado.
Ex.:
Essa função é especificada para tratar as respostas do servidor e pode ser chamada para diversas situações distintas. Por essa razão, devemos escrever o código de tratamento de modo que nosso tratamento seja executado apenas para o cenário que desejamos. Basicamente, os possíveis cenários se restringem a combinações das etapas de envio e do status da resposta:
Etapa | Valor | Descrição |
UNSET | 0 | A instância do objeto XMLHttpRequest foi criada. |
OPENED | 1 | O método open (será vista logo em seguida) foi chamado com sucesso e já é possível definir cabeçalhos (utilizando a função setRequestHeader) e enviar dados ao servidor. |
HEADERS_RECEIVED | 2 | Parte da resposta de uma requisição já foi recebida e todos os cabeçalhos da resposta já estão disponíveis. |
LOADING | 3 | O corpo da resposta está sendo recebida. |
DONE | 4 | Toda a resposta foi recebida ou algo de errado ocorreu. |
Versão 5.3 - Todos os Direitos reservados