AJAX - O Objeto XMLHttpRequest - Parte 4

17/04/2006 20:12:00

Autor: Rondinely S. de Almeida


Serviços para Webmasters

Este artigo é uma continuação do artigo AJAX - O Objeto XMLHttpRequest - Parte 3, faremos apenas algumas alterações nos arquivos de exemplos para utilizarmos o método POST ao invés de GET na transmissão de dados do objeto XMLHttpRequest.

O documento pesquisaAJAXPost.php

Este documento é baseado no documento pesquisaAJAXPost.php do artigo anterior desta série, vamos analisar aqui apenas as alterações realizadas para mudar o método usado de GET para POST.

function startHttpReq(buscar) {
document.getElementById("listboxresult").style.visibility="hidden";
url = "pesquisaAJAXcidadesPost.php";
strData = "buscar="+escape(buscar); //Dados a serem enviados.

Aqui podemos notar que a variável url irá conter agora apenas a localização do documento de pesquisa, na versão anterior além da localização do documento já passariamos as variáveis passadas pelo método GET.

Temos aqui também a introdução da variável strData que irá conter aos dados a serem enviados pelo método POST, a sintese é a mesma das variáveis para o método GET (nome_variável=valor&nome_variável=valor&nome_variá...), a diferença é que elas não estão junto ao nome do documento de pesquisa.

xmlhttp.onreadystatechange = XMLHttpRequestChange; 
xmlhttp.open("POST", url, true); //Abre a url.
xmlhttp.setRequestHeader('Content-Type','text/xml');
xmlhttp.setRequestHeader('encoding','ISO-8859-1');
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.setRequestHeader('Content-length', strData.length );

xmlhttp.send(strData); //Envia dados ao documento da url.
Não deixe de ver também:

Neste bloco do código aparecem as seguintes alterações: no lugar do método GET colocamos POST, xmlhttp.open("POST", url, true); acrescentamos duas instruções, xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'), que avisa ao servidor que iremos transmitir dados possivelmente via POST; e xmlhttp.setRequestHeader('Content-length', strData.length ), que comunica o tamanho dos dados que serão transmitidos. A última alteração deste bloco está no método send do objeto XMLHttpRequest, no lugar de transmitirmos apenas a variável null (nula), mandamos aqui os dados contidos na variável strData.

São estas as alterações necessárias no documento pesquisaAJAX.html, vamos ver agora como fica o documento de pesquisa.

O documento presquisaAJAXcidadesPost.php

Este documento é baseado no pesquisaAJAXcidades.php do artigo anterior, e vermos a seguir as alterações necessárias nele para transmitirmos dados no método POST e não mais pelo método GET.

<?php
header("Content-type: text/xml; charset=ISO-8859-1");
print '<?xml version="1.0" encoding="ISO-8859-1"?>';
?>
<cidades>
<?php
require_once("../dbexemplos.php");
$buscar = $_POST['buscar'];
$result = mysql_query("SELECT id, nome FROM municipios WHERE nome LIKE '$buscar%' ORDER BY nome")
or die("Query invalida: " . mysql_error()); while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("<retorno id=\"%d\">%s</retorno>\n", $row[0],$row[1]);
}
?>
</cidades>

A única alteração necessária é no tipo de variável pré-definida do PHP, no lugar de $_GET, usamos $_POST. Pronto, o documento de pesquisa já está alterado para receber dados no método POST. Lembramos que a partir da versão 4.1.0 do PHP podemos utilizar a variável superglobal $_REQUEST no lugar de $_GET ou $_POST, uma vez que a primeira contêm as duas últimas, neste caso não precisariamos realizar nenhuma alteração no documento de pesquisa para receber tanto dados pelo método $_GET ou $_POST.

Até o próximo artigo.

ANEXO I

CREATE TABLE municipios (
    id int(11) NOT NULL,
uf int(11) NOT NULL,
nome varchar(40) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Municípios Brasileiros';
CREATE TABLE estados (
id int(10) unsigned NOT NULL auto_increment,
sigla char(2) NOT NULL,
nome varchar(25) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY sigla (sigla)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Artigos relacionados

AJAX - O Objeto XMLHttpRequest - Parte 3 : 12/03/2006
Como prometemos no artigo anterior veriamos uma aplicação prática para...

AJAX - O Objeto XMLHttpRequest - Parte 2 : 18/01/2006
Este é o segundo artigo da série e nele vamos conhecer mais a fundo o...

AJAX - O Objeto XMLHttpRequest - Parte 1 : 12/01/2006
Este é o primeiro artigo de uma série na qual estaremos explorando os...

Alimentando uma ComboBox dinamicamente utilizando técnicas AJAX : 28/11/2005
Este artigo mostrará como responder a uma interação...

>> Inicio <<
© Copyright hospedia.com.br - 2005
Todos os direitos reservados.
Seu Ponto de Partida na Internet
Receitas de Bolos
Lyrics
centro-top