



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Saiba como as informações são armazenadas em uma sessão do usuário no servidor web e como realizar requisições assíncronas para executar operações no servidor, permitindo que as respostas sejam inseridas dinamicamente na página web sem recarregar a página. Compreenda o objetivo de realizar requisições assíncronas, como reduzir o tráfego na navegação do usuário e permitir que o servidor retorne apenas as informações necessárias.
Tipologia: Notas de estudo
1 / 5
Esta página não é visível na pré-visualização
Não perca as partes importantes!




Página 1 de 5
Introdução
Guarde bem a frase: “ O navegador web hospeda uma aplicação, não conteúdo ”. Em uma aplicação web clássica, o navegador não sabe nada sobre as ações que o usuário executou até o momento. Todas as informações são armazenadas em uma sessão do usuário, localizada no servidor web. Quando o usuário entra em um site ou inicia uma sessão, vários objetos são criados no lado do servidor. Em seguida, o servidor web envia ao navegador a página inicial com códigos HTML e outros dados. Sempre que o usuário interage com o site, o navegador envia uma requisição ao servidor web, que responde à solicitação do navegador com um outro documento. O que o navegador faz? Bem, o navegador simplesmente retira o documento atual e exibe o novo documento, mesmo que os dois documentos sejam muito semelhantes. Isso ocorre porque toda a lógica da aplicação está no lado do servidor web. Em uma aplicação Ajax, parte da lógica da aplicação é movida do servidor web para o navegador. A grande idéia é a de que o documento que chega no navegador web (lado cliente) torne-se parte da aplicação, permanecendo com ele por toda a sessão. Assim, é possível que essa parte da aplicação, que está no lado do cliente, tenha a capacidade de decidir se serão manipuladas no lado cliente ou no lado servidor, ou ainda uma combinação das duas, permitindo que o navegador armazene dados sobre o estado da aplicação. Sendo assim, esse documento mostrará como realizar requisições assíncronas a um servidor web permitindo realizar requisições para executar diversas operações no servidor de modo que o usuário receba respostas que sejam inseridas dinamicamente em sua página web, sem que, por exemplo, essa página seja recarregada por uma nova página.
O Servidor Web fornece dados, não conteúdo
Quando o navegador (lado cliente) faz uma requisição, o servidor retorna uma página inteira. O objetivo de realizar uma requisição assíncrona ao servidor web é permitir que o servidor retorne apenas as informações que são do interesse do usuário, ou seja, retornar algumas informações que podem ser inseridas na página atual do usuário, via modelo DOM, estudado no documento anterior. Com esse novo modelo de requisição-resposta, evitamos que sejam reenviados ao navegador todos os conteúdos e códigos que não sofreram modificações. Por isso, o servidor deve retornar dados em vez de conteúdos. Assim, podemos reduzir a quantidade de informações que chega ao navegador cliente, priorizando a transferência dos dados mais importantes e essenciais à página atual do usuário. Em uma aplicação que utiliza Ajax, temos menos tráfego ao longo da navegação por parte do usuário cliente, ocorrendo maior tráfego apenas no início, quando o usuário inicia sua navegação em um determinado site. As comunicações subseqüentes gerarão menos tráfego, havendo um menor custo da largura de banda.
Métodos de Comunicação com Servidor Web
Um navegador web só conhece duas maneiras de enviar dados para um servidor: através de hiperlinks e formulários HTML, métodos chamados de GET e POST, respectivamente. Como já estudamos no documento anterior, podemos acionar funções JavaScript também através de hiperlinks e formulários. Realizando requisições assíncronas a um servidor web, não será mais necessário aguardar ao clicar em um hiperlink ou submeter um formulário, de forma que a página web atual do usuário receba apenas alguns dados que serão atualizados dinamicamente em sua página atual. Uma aplicação Ajax, portanto, é um código JavaScript que se comunica com o servidor enquanto o usuário continua trabalhando, evitando o clássico modelo “clica e espera” do usuário.
Compatibilidade entre Navegadores Web
Aplicações Ajax contém código JavaScript complexos que são executados no lado cliente, aumentando bastante a possibilidade de erros e falta de compatibilidade entre os diversos navegadores. Toda aplicação Ajax deve estar preparada para fazer verificações de compatibilidade entre navegadores. O objeto utilizado para realizar requisições assíncronas é o XMLHttpRequest. O exemplo seguinte permite verificar, através da linguagem JavaScript, se o navegador do cliente está preparado para a executar aplicações Ajax. O código seguinte está escrito em JavaScript.
Retornar apenas as informações relevantes à aplicação no momento é a principal característica de uma aplicação Ajax.
Página 2 de 5
Não confunda com a linguagem Java pela existência da estrutura try...catch. Esta estrutura existe também na linguagem de programação de scripts JavaScript.
function Verifica() { var req; try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(ex) { try { req = new XMLHttpRequest(); } catch(exc) { alert("Seu navegador não permite uso do Ajax."); req = null; } } } return(req); }
A função a seguir corresponde à mesma função acima, porém escrita utilizando-se a estrutura condicional “se”, talvez mais fácil um pouco na sua compreensão.
function Verifica() { var req; if (window.XMLHttpRequest) // Mozilla, Safari e outros req = new XMLHttpRequest(); else if (window.ActiveXObject) { // Internet Explorer req = new ActiveXObject("Msxml2.XMLHTTP"); if (req) req = new ActiveXObject("Microsoft.XMLHTTP"); } else alert("Seu navegador não permite uso do Ajax."); return(req); }
A Web 2.
O Ajax é importante nesse contexto porque ajuda a reduzir bastante a distância entre as aplicações desktop e as aplicações web. Porém, é importante salientar algumas vantagens e desvantagens da Web 2.0.
A seguir, algumas das principais vantagens da Web 2.0:
Página 4 de 5
} }
Seu nome Resposta do servidor
A seguir, o código do programa escrito em linguagem PHP (ajax01.php) que será executado pelo servidor quando o usuário clicar no botão “Envia” do documento acima:
A terceira linha de código da função Processa consiste em definir uma função que tratará a resposta do servidor, através da propriedade onreadystatechange.
req.onreadystatechange = function() { // corpo da função }
Os métodos open e send são utilizados para realizar a requisição assíncrona. Note o terceiro parâmetro da função open (true) indicando que a requisição será assíncrona. Os dados a serem enviados ao servidor devem estar sob a forma de uma queryString, ou seja, no formato de envio do tipo GET, contendo sempre o par variável=valor, como no exemplo seguinte:
nome=Sandro&saldo=100&endereco=Goiania
Para enviar os dados ao servidor usando o método POST, devemos definir o tipo MIME da requisição. Para isso, a instrução seguinte foi inserida no código:
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
O trecho de código seguinte retorna o estado do objeto XMLHttpRequest na sua propriedade denominada readyState , podendo assumir o valor 0 (não inicializado), 1 (aberto), 2 (enviado), 3 (recebendo) e 4 (carregado). O estado da solicitação é verificado através da propriedade status do objeto XMLHttpRequest , onde 200 equivale a “OK” e 404 para “Not Found” (não encontrado).
if (req.readyState == 4) { if (req.status == 200) document.getElementById("id_resp").value = req.responseText; else alert("Status: "+req.statusText); }
statusText corresponde à propriedade do objeto XMLHttpRequest que retorna o texto referente ao estado da solicitação, como por exemplo, “OK” ou “Not Found”. A propriedade responseText retorna a resposta do servidor como uma string. A propriedade mais importante é a onreadystatechange que define a função que irá manipular os eventos, que será ativada a cada mudança de estado da requisição Ajax.
Página 5 de 5
(Envie seu questionário ao professor para [email protected] a fim de obter conceitos de classe ao longo do semestre letivo. Este questionário corresponde aos documentos dw03 e dw04. Bom trabalho!)