Introdução ao Ajax
Página 1 de 1
Introdução ao Ajax
Índice:
- O que é AJAX?
- O que preciso para programar?
- Como iniciar o AJAX?
- Compatibilidade com os navegadores
- Propriedades do objeto AJAX
- AJAX Post Method
O que é Ajax?
É um recurso do Java script que permite receber respostas do servidor sem a necessidade de recarregar a página
O que é preciso para programar?
- Um navegador atual
- Um servidor rodando(para executar os script ServerSide)
Como iniciar o AJAX?
Para Firefox, opera, crhome, safari e IE7+ usamos o XMLHttpRequest();
Para internet Explorer 5 ou 6 usamos um ActiveXObject:
Compatibilidade com os navegadores:
Não podemos escolher apenas um método para iniciar o AJAX, pois o usuário pode usar um navegador sem suporte ao método que usamos, portanto, para juntar essas duas formas, usaremos condicionais.
Podemos ainda, criar uma função para definir o objeto, sem limitá-lo a uma variável fixa:
Propriedades do objeto AJAX:
xmlhttp é, agora, o nosso objeto, e ele tem propriedades essenciais para manipular a sua execução. São elas:
onreadystatechange tem 5 valores, eles são:
Continuando pelo nosso script:
Toda vez que o status for modificado, ele exibirá este alerta, mas não é isso que nós queremos. Nós queremos a resposta dada pelo servidor.
E modificando o código acima, nós conseguimos:
Toda vez que o status for modificado, ele executará essa condicional e, quando o status for 4(completo) ele dará um alerta na resposta daad pelo servidor.
Mas para que onreadystatechange seja acionada, a execução de algum script server side deve ser executada, e isso é feito com as propriedades .open e .send
O uso do open:
ex:
O uso do send:
parametros => parametros que devem ser passados ao servidor, caso o método seja post, se o metodo for get
usamos:
Sabendo do uso do .open e do .send, nosso script ficará assim:
E nosso script hora.php é:
AJAX - Post Method
O método que vimos até agora, foi o método post, que não suporta uma quantidade de caracteres grande, pois, ainda que a requisição não seja vista, ela é feita através da URL, que tem um tamanho máximo. No entanto, definindo alguns cabeçalhos no script e enviando as informações na função send(), podemos utilizar o método post.
Abriremos um novo objeto XmlHttpRequest(), desta forma:
E o script PHP pode ser assim:
Tá, e daí? Não vi diferença, os dois fizeram a mesma coisa com a mesma eficiência.
Não existe diferença aparente porque os parâmetros que eu passei foram curtos, mas se você quer pegar uma informação tal como um "texto" de um "TextArea", dependendo do tamanho desse texto, o texto pode chegar "cortado" no script PHP e você pode ter problemas com isso.
Você pode adaptar esse script para interagir com um formulário. Basta declarar as variáveis - com seus respectivos valores - no evento onclick do botão que enviaria o formulário e depois, usar o getElementById('ELEMENTO') para colocar o responseTexto nele.
E aqui, eu termino este tutorial.
Espero que tenham gostado.
Créditos:
Aulto
- O que é AJAX?
- O que preciso para programar?
- Como iniciar o AJAX?
- Compatibilidade com os navegadores
- Propriedades do objeto AJAX
- AJAX Post Method
O que é Ajax?
É um recurso do Java script que permite receber respostas do servidor sem a necessidade de recarregar a página
O que é preciso para programar?
- Um navegador atual
- Um servidor rodando(para executar os script ServerSide)
Como iniciar o AJAX?
Para Firefox, opera, crhome, safari e IE7+ usamos o XMLHttpRequest();
- Código:
<script>
var xmlhttp;
xmlhttp = new XMLHttpRequest();
</script>
Para internet Explorer 5 ou 6 usamos um ActiveXObject:
- Código:
<script>
var xmlhttp;
xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);
</script>
Compatibilidade com os navegadores:
Não podemos escolher apenas um método para iniciar o AJAX, pois o usuário pode usar um navegador sem suporte ao método que usamos, portanto, para juntar essas duas formas, usaremos condicionais.
- Código:
<script>
var xmlhttp;
function ajax()
{
if(window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
} else if(window.ActiveXObject)
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} else
{
alert('Este navegador não suporta AJAX');
}
}
</scritp>
Podemos ainda, criar uma função para definir o objeto, sem limitá-lo a uma variável fixa:
- Código:
<script>
function ajax()
{
var xmlhttp = getXmlHttpObject();
if(xmlhttp == null)
{
alert('Este navegador não suporta XML HTTP REQUEST!');
}
}
function getXmlHttpObject()
{
if(window.XMLHttpRequest)
{
return new XMLHttpRequest();
} else if(window.ActiveXObject)
{
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
</script>
Propriedades do objeto AJAX:
xmlhttp é, agora, o nosso objeto, e ele tem propriedades essenciais para manipular a sua execução. São elas:
- Código:
.onreadystatechange => Chama uma função toda vez que o status do processamento for modificado
.readyStatus => Captura o status atual do processamento
.open => Executa um script
.send => Envia os parâmetros ao script
.responseText => Reposta do servidor
onreadystatechange tem 5 valores, eles são:
- Código:
0 => A solicitação não foi inicializada //pedido
1 => A solicitação foi inicializada //pedido
2 => A solicitação foi enviada //pedido
3 => A solicitação está sendo processada //resposta
4 => A solicitação foi processada //resposta
Continuando pelo nosso script:
- Código:
<script>
function ajax()
{
var xmlhttp = getXmlHttpObject();
if(xmlhttp == null)
{
alert('Este navegador não suporta XML HTTP REQUEST!');
}
xmlhttp.onreadystatechange=function()
{
alert('O status do processamento foi modificado');
}
}
function getXmlHttpObject()
{
if(window.XMLHttpRequest)
{
return new XMLHttpRequest();
} else if(window.ActiveXObject)
{
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
</script>
- Código:
xmlhttp.onreadystatechange=function()
{
alert('O status do processamento foi modificado');
}
Toda vez que o status for modificado, ele exibirá este alerta, mas não é isso que nós queremos. Nós queremos a resposta dada pelo servidor.
E modificando o código acima, nós conseguimos:
- Código:
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState == 4) //status 4 = completo
{
alert(xmlhttp.responseText);
}
}
Toda vez que o status for modificado, ele executará essa condicional e, quando o status for 4(completo) ele dará um alerta na resposta daad pelo servidor.
Mas para que onreadystatechange seja acionada, a execução de algum script server side deve ser executada, e isso é feito com as propriedades .open e .send
O uso do open:
- Código:
open(metodo, script, assincrono);
- Código:
metodo => get ou post
script => scritp que processára as informações
assincrono => true ou false; diz se a execução será feita sem recarregar a página(true = sem recarregar; false = recarregando)
ex:
- Código:
xmlhttp.open("GET", "script.php", true);
O uso do send:
- Código:
send(parametros);
parametros => parametros que devem ser passados ao servidor, caso o método seja post, se o metodo for get
usamos:
- Código:
send(null);
Sabendo do uso do .open e do .send, nosso script ficará assim:
- Código:
<script>
function ajax()
{
var xmlhttp = getXmlHttpObject();
if(xmlhttp == null)
{
alert('Este navegador não suporta XML HTTP REQUEST!');
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState == 4) //status 4 = completo
{
alert(xmlhttp.responseText);
}
}
xmlhttp.open("GET", "hora.php", true);
xmlhttp.send(null);
}
function getXmlHttpObject()
{
if(window.XMLHttpRequest)
{
return new XMLHttpRequest();
} else if(window.ActiveXObject)
{
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
</script>
<!-- Logo abaixo desse script colocaremos um botão que chama a função ajax(): -->
<input type="button" onclick="return ajax();" value="HORA!">
E nosso script hora.php é:
- Código:
<?php
echo date("H:i:s");
?>
AJAX - Post Method
O método que vimos até agora, foi o método post, que não suporta uma quantidade de caracteres grande, pois, ainda que a requisição não seja vista, ela é feita através da URL, que tem um tamanho máximo. No entanto, definindo alguns cabeçalhos no script e enviando as informações na função send(), podemos utilizar o método post.
Abriremos um novo objeto XmlHttpRequest(), desta forma:
- Código:
//variáveis do objeto
var xmlhttp = new XMLHttpRequest();
var url = "arquivo1.php";
//parametros para serem passado por post
var parametros = "nome=Giovanni&sNome=Paolo";
//abrir conexão
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
}
//desta vez, send não teve parametro "null"
//pois o método é POST
xmlhttp.send(parametros);
E o script PHP pode ser assim:
- Código:
<?php
echo "Olá, $_POST['nome'] $_POST['sNome']";
?>
Tá, e daí? Não vi diferença, os dois fizeram a mesma coisa com a mesma eficiência.
Não existe diferença aparente porque os parâmetros que eu passei foram curtos, mas se você quer pegar uma informação tal como um "texto" de um "TextArea", dependendo do tamanho desse texto, o texto pode chegar "cortado" no script PHP e você pode ter problemas com isso.
Você pode adaptar esse script para interagir com um formulário. Basta declarar as variáveis - com seus respectivos valores - no evento onclick do botão que enviaria o formulário e depois, usar o getElementById('ELEMENTO') para colocar o responseTexto nele.
E aqui, eu termino este tutorial.
Espero que tenham gostado.
Créditos:
Aulto
Tópicos semelhantes
» Aprenda HTML - Introdução
» introdução
» Introdução - Ruby
» [Tutorial] Introdução ao PHP
» Programação em C# - 1 Introdução!
» introdução
» Introdução - Ruby
» [Tutorial] Introdução ao PHP
» Programação em C# - 1 Introdução!
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Dom 08 Abr 2018, 18:40 por JorgeZinhoo002
» Ojkjeeeee
Seg 10 Out 2016, 23:19 por Frozen
» Naruto Great Ninja Batle
Dom 09 Out 2016, 14:29 por GuiinhoLP
» Recrutamento de um Designer para jogo de CDZ.
Sex 23 Set 2016, 18:37 por newbie123
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:11 por Eduardo
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:11 por Eduardo
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:09 por Eduardo
» Projeto Dbz
Qua 31 Ago 2016, 23:46 por 157
» Avaliação - Sprites Naruto
Qua 31 Ago 2016, 17:09 por 157
» [Sprites] DBZ (Plix)
Qua 31 Ago 2016, 14:13 por 157
» Super Pack - Bleach V.2
Qua 31 Ago 2016, 13:02 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:04 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:03 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:02 por 157
» [Pedido] Contador de resets na FrmMain
Sáb 13 Ago 2016, 17:45 por killers97
» [Recrutamento]
Qua 10 Ago 2016, 23:09 por Monsters
» Ajuda erro no Cliente e Servidor do EEB 2.6!
Qua 20 Jul 2016, 19:53 por Binholx
» Como criar tilesets para Eclipse Origins 3.0 (POKÉMON)
Qua 29 Jun 2016, 19:46 por Sir Aaron
» Recursos Pokemons
Qua 29 Jun 2016, 19:34 por Sir Aaron
» erro frm flash
Qua 25 maio 2016, 13:51 por vava123
» Pedido - Pack de star wars
Qui 19 maio 2016, 05:06 por edsonpet
» [Ajuda] Sobre como por o servidor on por ip fixo
Ter 17 maio 2016, 16:14 por vava123
» Illusion Dimension - O Misterio do ID: BETA TESTE ONLINE
Sex 06 maio 2016, 20:02 por LksFlorencio
» [NSME] Naruto Shinobi Maker Engine
Qua 23 Mar 2016, 15:11 por luana1457
» Script /base,/casa Igual DBZ Forces
Dom 21 Fev 2016, 07:34 por JorgeZinhoo002
» [Pedido]Colar Tsunade item sprite eclipse origin
Qui 21 Jan 2016, 07:38 por lawllietbr
» [Pedido] Elysium
Sáb 19 Dez 2015, 11:31 por luana1457
» Naruto - Recruta
Ter 15 Dez 2015, 18:40 por Uchiha ~
» [Avaliação] - Kirito from Sword Art Online; Red and Pikachu from Pokemon.
Qua 25 Nov 2015, 13:43 por Thanakii
» [Avaliação] - Kenpachi Zaraki from Bleach; Libra Shiryu From Saint Seiya.
Qua 25 Nov 2015, 12:55 por Thanakii
» Demonstração de Sprites (Á VENDA!)
Qua 25 Nov 2015, 12:40 por Thanakii
» [Sistema de Reset]Para Eclipse .
Ter 24 Nov 2015, 16:51 por VithorUchi
» Cada Guild Nascer em Certo Mapa
Qui 12 Nov 2015, 06:13 por fabiofeijó_HIT
» Dragon Ball z Fusion A Grande Volta
Qui 29 Out 2015, 15:17 por fabiofeijó_HIT
» Ajuda com Ip fixo
Seg 26 Out 2015, 16:07 por GalaxyHells15
» Como Fazer um GUI no Eclipse Origins
Dom 18 Out 2015, 22:10 por Jeanleee
» Shisui Susanoo
Dom 18 Out 2015, 20:23 por Jeanleee
» Fantasy Art Online
Dom 18 Out 2015, 16:41 por daviih123
» Ajuda !!
Seg 05 Out 2015, 12:13 por andersonzika
» como passar o usuário e senha para o MainMenu?
Seg 28 Set 2015, 22:03 por Bëzerk
» Ru time ero 13 Type mismatch
Seg 28 Set 2015, 09:08 por andredarle
» Jarvis 1.3 Download
Qua 23 Set 2015, 18:42 por soares125
» [Avaliação/Disponibilização]Árvore 64x64
Qua 23 Set 2015, 15:15 por Over~
» Mlk's Zikas Signatures
Ter 22 Set 2015, 21:15 por Aikawa Reborn'
» Pedido de Sistemas
Dom 20 Set 2015, 18:05 por cleyton_05
» [AjudaEEB]Gerador de EXP
Qua 16 Set 2015, 14:04 por Over~
» [Avaliar] Base, Humano e Goblin.
Seg 14 Set 2015, 22:51 por .iBlaz3.
» Fabrica do Tio Cronos!
Dom 13 Set 2015, 21:31 por [ADM]Cronos
» [PixelArt] Minion - Meu malvado favorito
Dom 13 Set 2015, 12:51 por [ADM]Cronos
» [Avaliar] Goku Dragon Ball Z
Qua 05 Ago 2015, 21:36 por Setrux