Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Introdução à Ajax: Armazenamento de Dados no Servidor e Requisições Assíncronas, Notas de estudo de Informática

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

Antes de 2010

Compartilhado em 27/03/2008

maxwenne-guimaraes-10
maxwenne-guimaraes-10 🇧🇷

5

(1)

11 documentos

1 / 5

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Página 1 de 5
E-mail professor: [email protected]Arquivo: dw04 Ajax - objeto XMLHttpRequest.doc
Requisitando Servidor Web Assincronamente
usando Ajax (Objeto XMLHttpRequest)
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 õ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.
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe Introdução à Ajax: Armazenamento de Dados no Servidor e Requisições Assíncronas e outras Notas de estudo em PDF para Informática, somente na Docsity!

Página 1 de 5

Requisitando Servidor Web Assincronamente

usando Ajax (Objeto XMLHttpRequest)

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:

  • O uso de softwares on-line elimina os custos de licença de instalação, elimina o tempo perdido nesse processo de instalação e permite ao usuário pagar somente pelo tempo de uso de uma dada aplicação.

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

Questionário

(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!)

  1. Quais são os elementos-chave do Ajax? Explique cada um deles.
  2. Elabore uma página utilizando a tecnologia do modelo DOM, que mostre um objeto do tipo radio para que o usuário selecione uma das seguintes opções: Criar campo de texto, criar caixa de seleção (checkbox), criar botão de opção única (radio button), criar menu de seleção única (drop-down) ou criar lista de opções rolável. Assim que o usuário selecionar uma dessas opções, a página deverá criar o objeto selecionado dinamicamente no centro da página.
  3. Modifique a página do exercício anterior para permitir que, assim que o usuário selecionar uma das opções, o mesmo possa informar argumentos para cada tipo de objeto, como por exemplo, se o usuário selecionar a opção “Criar campo de texto”, a página deverá obter do usuário valores para o objeto selecionado, como tamanho (size), número máximo de caracteres (maxlength), nome da variável do objeto (name) e valor para o objeto (value).
  4. Elabore uma página utilizando a tecnologia do modelo DOM, que leia um nome de usuário e uma senha, centralizados na página. Um botão “Enviar” deve ser inserido. Caso o usuário deixe o nome em branco, assim que clicar no botão “Enviar”, a página deverá mostrar um balão amarelo ao lado da caixa de texto de nome do usuário alertando sobre a exigência de nome de usuário. Pesquise CSS e implemente um balão interessante. O balão poderá ser redondo ou quadrado.
  5. Elabore uma página utilizando Ajax que leia o código de uma mercadoria de uma loja. Um botão “Consultar preço” deve ser inserido na página. Assim que o usuário clicar no botão “Consultar preço”, a página deverá consultar o preço da mercadoria assincronamente e mostrar o preço em uma caixa de texto que deverá ser criada dinamicamente assim que a resposta chegar. Para isso, implemente um programa em php (ou outra linguagem de sua preferência) que obtenha o código da mercadoria e devolva o seu preço. Para fins de teste, seu programa php não precisa consultar preços em um arquivo ou tabela de um BD, mas simplesmente inclua uma estrutura do tipo switch que devolva os preços de alguns códigos fixos de mercadorias. O código de mercadoria deve ser validado tanto no cliente quanto no servidor.
  6. Elabore uma página utilizando Ajax que leia o seu primeiro nome e consulte seu sobrenome assincronamente, colocando a resposta dinamicamente em uma caixa de texto, assim que um botão “Consultar sobrenome” for clicado.
  7. Elabore uma página utilizando Ajax que permita ao usuário selecionar um dos estados de nosso país em um objeto do tipo “Combobox”. Assim que o usuário selecionar o estado desejado, por exemplo, “GO”, a página deverá consultar assincronamente um preço de frete para esse estado. Para isso, implemente um simples programa em php (ou outra linguagem de sua preferência) que devolva o preço do frente usando, por exemplo, uma estrutura switch. O preço do frente deverá ser mostrado na página em uma caixa de texto que aparecerá dinamicamente assim que a resposta do servidor chegar.
  8. Elabore uma página utilizando Ajax que seja um tradutor inglês-português. A página deve possuir uma caixa de texto para que o usuário informe a palavra que deseja que seja traduzida. Um outro objeto deve permitir ao usuário selecionar se deseja traduzir inglês-português ou português-inglês. Assim que clicar em um botão “Traduzir”, a página deverá consultar a palavra assincronamente e colocar a resposta em uma caixa de texto que deve estar previamente inserida na página, ou seja, a caixa de texto para a resposta deverá estar sempre presente na página, desde o carregamento da mesma. Apenas a resposta aparecerá dentro desta caixa de texto. Assim que a resposta chegar, o botão “Traduzir” deverá conter o texto “Nova tradução”. Do mesmo modo que nos exercícios anteriores, elabore um programa php (ou outra linguagem de sua preferência) que tenha algumas palavras e suas respectivas traduções dentro de uma estrutura switch.
  9. Elabore uma página web que represente um jogo da velha usando a tecnologia do modelo DOM. A página deve mostrar inicialmente uma tabela 3 x 3 com uma figura (jpg com imagem em branco 60 x 60 pixels) em cada célula. Um botão “Novo jogo” deve ser usado para limpar a tabela, ou seja, aplicar a figura em branco em todas as células. Assim que um jogador clicar na célula desejada, a página deverá trocar a figura em branco por uma outra figura que represente um “X” ou “O” na célula, também 60 x 60 pixels. Abaixo, na página, você deverá inserir dois campos para mostrar o placar dos jogadores “X” e “O”. Use a sua imaginação e crie um jogo da velha interessante.
  10. Melhore as páginas dos exercícios anteriores que utilizam requisição assíncrona, para que mostrem no canto superior esquerdo da página um texto (com fonte cor amarelo com fundo preto) que mostre no momento correto cada uma das opções da propriedade readyState do objeto XMLHttpRequest.