Este artigo descreve as alterações necessárias para utilizar o método POST ao invés de GET na transmissão de dados do objeto XMLHttpRequest em exemplos AJAX. As alterações incluem definir a variável de dados a serem enviados, definir cabeçalhos HTTP apropriados e usar o método send para transmitir os dados.
1. AJAX - O Objeto XMLHttpRequest - Parte 4
Principal .: Compras :.
Início AJAX - O Objeto XMLHttpRequest - Parte 4
Categorias
Ajax 17/04/2006 20:12:00
DHTML
Autor: Rondinely S. de Almeida
XML
PHP
Serviços para Webmasters
MySQL
IP Cursos: Java, RUP, BD 10g
Qual é o meu IP? Forms,PL/SQL, Webdesigner, AJAX,PHP
Certificação SUN, JEE, JSF
www.cotiinformatica.com.br
Hospedagem PhP
Site Grátis. Pagamento Facilitado Ativação
Imediata. R$ 5,90/mês
WebNames.com.br
Big Solutions
Soluções Web, Sites, Intranet, EAI Gestão de
conteúdo e colaboração
www.bigsolutions.com.br
|<< Primeira < Anterior 1/1 Próxima > Última >>|
Exemplos:
pesquisaAJAXPost.html
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.
http://www.hospedia.com.br/artigos/8/ajax/1/ajax_-_o_objeto_xmlhttprequest_-_parte_4.html[07/12/2009 15:09:59]
2. AJAX - O Objeto XMLHttpRequest - Parte 4
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:
Hospedagem Linux Big Solutions
1200MB espaço, 2GB tráfego. Ativação Soluções Web, Sites, Intranet, EAI Gestão
imediata. R$ 5,90/mês de conteúdo e colaboração
W bN b bi l ti b
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
Estrutura das tabelas MySQL
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';
http://www.hospedia.com.br/artigos/8/ajax/1/ajax_-_o_objeto_xmlhttprequest_-_parte_4.html[07/12/2009 15:09:59]