Enviar mediante POST e GET usando uma só função AJAX
Quando se realiza uma web que usa AJAX, o problema mais freqüente é ter que escrever uma função para cada variável ou conjunto de variáveis que se quer passar. Isto soma muito peso ao código de seu website.Por Pablo Lecce
Publicado em: 14/2/08
Neste tutorial contamos como criar uma só função que lhe permita passar variáveis mediante GET e POST entre duas páginas web usando AJAX .
Isto aliviará muito o peso de seus arquivos javascript e de suas páginas já que você usará uma função para tudo e não uma para cada variável ou conjunto de variáveis que deseje passar.
ANTES DE COMEÇAR
Este tutorial está feito para pessoas que saibam como criar objetos AJAX, escrever funções e passá-las mediante AJAX por POST ou GET. Também que tenham conhecimentos sobre PHP e Javascript. Se não for o seu caso, por favor aprofunde-se em tais aspectos a fim de entendê-lo.
O CÓDIGO
Primeiro copio aqui o código completo, e logo passarei a analisá-lo.
<script>
function objetus(file) {
xmlhttp=false;
this.AjaxFailedAlert = "Seu navegador não suporta as funcionalidades deste site e poderia experimentá-lo de forma diferente q eu foi pensada. Por favor habilite javascript em seu navegador para vê-lo normalmente.\n";
this.requestFile = file;
this.encodeURIString = true;
this.execute = false;
if (window.XMLHttpRequest) {
this.xmlhttp = new XMLHttpRequest();
if (this.xmlhttp.overrideMimeType) {
this.xmlhttp.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // IE
try {
this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e) {
try {
this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
this.xmlhttp = null;
}
}
if (!this.xmlhttp && typeof XMLHttpRequest!='undefined') {
this.xmlhttp = new XMLHttpRequest();
if (!this.xmlhttp){
this.failed = true;
}
}
}
return this.xmlhttp ;
}
function recebeid(_pagina,valorget,valorpost,camada){
ajax=objetus(_pagina);
if(valorpost!=""){
ajax.open("POST", _pagina+"?"+valorget+"&tempo="+new Date().getTime(),true);
} else {
ajax.open("GET", _pagina+"?"+valorget+"&tempo="+new Date().getTime(),true);
}
ajax.onreadystatechange=function() {
if (ajax.readyState==1){
document.getElementById(camada).innerHTML = "<img src='loadingcircle.gif' align='center'> Aguarde por favor...";
}
if (ajax.readyState==4) {
if(ajax.status==200)
{document.getElementById(capa).innerHTML = ajax.responseText;}
else if(ajax.status==404)
{
capa.innerHTML = "O endereço não existe";
}
else
{
camada.innerHTML = "Error: ".ajax.status;
}
}
}
if(valorpost!=""){
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send(valorpost);
} else {
ajax.send(null);
}
}
</script>