Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lefestaf

Método Post

Recommended Posts

ai esta o codigo javascript do ajax:

 

function AJAX() {this.Updater=carregarDados;function carregarDados(caminhoRetorno,idResposta,metodo,mensagem) {var conteudo=document.getElementById(idResposta)conteudo.innerHTML= mensagem;var xmlhttp = getXmlHttp();//Abre a urlxmlhttp.open(metodo.toUpperCase(), caminhoRetorno,true);//Executada quando o navegador obtiver o códigoxmlhttp.onreadystatechange=function() {if (xmlhttp.readyState==4){//Lê o textovar texto=xmlhttp.responseText;//Desfaz o urlencodetexto=texto.replace(/\+/g," ");texto=unescape(texto);//Exibe o texto no div conteúdovar conteudo=document.getElementById(idResposta);conteudo.innerHTML = texto;}}xmlhttp.send(null);}}function getXmlHttp() {var xmlhttp;try{xmlhttp = new XMLHttpRequest();}catch(e){try{xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}catch(e){xmlhttp = false;}}}return xmlhttp;}

ai eu chamo ele com a funcao link:

function link(url,local,modo) {	var ajax = new AJAX();	ajax.Updater(url,local,modo,"<div class='carrega'><img src='Imagens/carrega.gif'> carregando</div>");}

o problema é que se for para enviar parametros, a url tem que ser assim: pagina1.php?acao=3, ou seja, via get, pois post ñ esta enviando!!

 

alguem poderia dar uma ajudinha!!

 

grato, Fernando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, o problema está porque você está dando um send(null), e send(null) é só dado quando é GET, quando é posto você precisa dar o send passando os parâmetros do post.

 

Cara, dá uma olhada na documentação no site da mozilla, vai te ajudar bastante

 

http://developer.mozilla.org/pt/docs/AJAX:Como_começar

 

Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara valeu, eu dei uma olhada mas eu ñ entendi direito, sou iniciante nesse eskema de ajax e talz, olh ai como eu coloquei:

 

function AJAX() {this.Updater=carregarDados;function carregarDados(caminhoRetorno,idResposta,metodo,mensagem) {var conteudo=document.getElementById(idResposta)conteudo.innerHTML= mensagem;var xmlhttp = getXmlHttp();if(metodo == "get") {//Abre a urlxmlhttp.open("GET", caminhoRetorno,true);}else if(metodo == "post") {xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');}//Executada quando o navegador obtiver o códigoxmlhttp.onreadystatechange=function() {if (xmlhttp.readyState==4){//Lê o textovar texto=xmlhttp.responseText;//Desfaz o urlencodetexto=texto.replace(/\+/g," ");texto=unescape(texto);//Exibe o texto no div conteúdovar conteudo=document.getElementById(idResposta);conteudo.innerHTML = texto;}}xmlhttp.send();}}function getXmlHttp() {var xmlhttp;try{xmlhttp = new XMLHttpRequest();}catch(e){try{xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}catch(e){xmlhttp = false;}}}return xmlhttp;}

coloquei um if para ver se é get ou post, mas pelo geito eu ñ entendi como funciona, se alguem puder me ajudar, agradeco!!

 

fernando!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

sou iniciante tben, + acho que intendi isso... o metódo GET eh utilizado quando se tem poucos elementos a se passar, quando tem bastante se usa o POST, no metódo GET n precisa enviar todos os parametros que vao ser repassado, pois isso acontece automaticamente (send(null))... agora no POST eh preciso mostrar direitinho oq vai se enviar (send(&bla=bla))

Compartilhar este post


Link para o post
Compartilhar em outros sites

sou iniciante tben, + acho que intendi isso... o metódo GET eh utilizado quando se tem poucos elementos a se passar, quando tem bastante se usa o POST, no metódo GET n precisa enviar todos os parametros que vao ser repassado, pois isso acontece automaticamente (send(null))... agora no POST eh preciso mostrar direitinho oq vai se enviar (send(&bla=bla))

cara, entaum eu vou ter que mostrar os parametros mesmo assim!!!puts, mas beleza..bom, num teria uma funcao em javascript para pegar todos os valores que estão sendo passados via post??flw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, realmente tem que ser feito com o nosso amigo mze falou, mas vou te dar uma idéia de como fazer a string post. Uma vez criei uma função que validava os campos ( não poderiam ser nulos) e os enviava via post para ajax. A função tah meio rudimentar porque não trabalhei muito em cima dela, só fiz funcionar e não a evolui...., mas é uma boa idéia de como fazer a string o post dinamicamente. Esta função retorna a string já formatada para o post, a única coisa que você tem que passar para ela são as ids dos seus campos. Dá uma estudada nela, pode te ajudar bastante

 

function parametros(texto) {		 // Recebe nome das ids separados por vírgulas	var meuArray = new Array();  // Cria array	meuArray = texto.split(','); // Explode a string das ids em um array	var lendo = 'x';			 // inicializa variável	var i = 0;				   // inicializa variável	var parametro = "";		  // inicializa variável	var valor = "";			  // inicializa variável	while(lendo) {		lendo = meuArray[i]; // Pega div de um campo do formulário		i = i + 1;		if (lendo) {		 // Verifica se existe campo			valor = document.getElementById(lendo).value; // Pega valor do campo			if (valor == ""){ // Caso valor nulo, dá mensagem para o usuário que campo deve ser preenchido				 alert("O campo " + document.getElementById(lendo).title + " deve ser preenchido!");				 document.getElementById(lendo).focus(); // Joga foco para o campo				 return false; // Retorna false a funcao			}			if (valor) { // Se existir valor então coloca ele no formato para ser dado o post via ajax				if (parametro) {					parametro = parametro + "&" + lendo + "=" + valor;				} else {					parametro = lendo + "=" + valor;				}				}		}	}	return parametro;}
Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, de acordo com essa funcao que você me passou, eu fiz assim:

function AJAX() {this.Updater=carregarDados;function carregarDados(caminhoRetorno,idResposta,parametro,metodo,mensagem) {var conteudo=document.getElementById(idResposta)conteudo.innerHTML= mensagem;var xmlhttp = GETXmlHttp();//Abre a urlxmlhttp.open(metodo.toUpperCase(),caminhoRetorno,true);//Executada quando o navegador obtiver o códigoxmlhttp.onreadystatechange=function() {if (xmlhttp.readyState==4){//Lê o textovar texto=xmlhttp.responseText;//Desfaz o urlencodetexto=texto.replace(/\+/g," ");texto=unescape(texto);//Exibe o texto no div conteúdovar conteudo=document.getElementById(idResposta);conteudo.innerHTML = texto;}}if(metodo == "GET") {	xmlhttp.send(null);	} else if(metodo == "POST"){			xmlhttp.send(parametro);			xmlhttp.setRequestHeader('Content-Type',"application/x-www-form-urlencoded; charset=iso-8859-1");			xmlhttp.setRequestHeader("Cache-Control","no-store, no-cache, must-revalidate");			xmlhttp.setRequestHeader("Cache-Control","post-check=0, pre-check=0");			xmlhttp.setRequestHeader("Pragma", "no-cache");	}}}function GETXmlHttp() {var xmlhttp;try{xmlhttp = new XMLHttpRequest();}catch(e){try{xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}catch(e){xmlhttp = false;}}}return xmlhttp;}
porem ñ ta enviando, ta dando esse erro:

Erro: uncaught exception: [Exception... "Component returned failure code: 0x804b000f [nsIXMLHttpRequest.setRequestHeader]" nsresult: "0x804b000f (<unknown>)" location: "JS frame :: http://localhost/site/controle/basico.js :: carregarDados :: line 38" data: no]

bom, continuo tentando e aguardando alguma resposta/solucao!1valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, ai vai um exemplo funcional, dá uma estudada nele em php, o novo do arquivo deve ser ajax.php

 

<?php	header("Content-Type: text/html;  charset=ISO-8859-1",true);	if($_POST['codigo']) {		echo "Código: ".$_POST['codigo']."<br>";		echo "Nome: ".$_POST['codigo']."<br>";		exit;	}?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Ajax</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><script>	function abreAjax() {		var ajax;				try{			ajax = new XMLHttpRequest();		}catch(ee){			try{				ajax = new ActiveXObject("Msxml2.XMLHTTP");			}catch(e){				try{					ajax = new ActiveXObject("Microsoft.XMLHTTP");				}catch(E){					ajax = false;				}			}		}		return ajax;	}	function parametros(texto) {		var meuArray = new Array();		meuArray = texto.split(',');		var lendo = 'x';		var i = 0;		var parametro = "";		var valor = "";		while(lendo) {			lendo = meuArray[i];			i = i + 1;			if (lendo) {				valor = document.getElementById(lendo).value;				if (valor == ""){					 alert("O campo " + document.getElementById(lendo).title + " deve ser preenchido!");					 document.getElementById(lendo).focus();					 return false;				}				if (valor) {					if (parametro) {						parametro = parametro + "&" + lendo + "=" + valor;					} else {						parametro = lendo + "=" + valor;					}					}			}		}		return parametro;	}	function envia(item,parms) {		var pagina = document.getElementById('pagina');		var ajax = abreAjax();		var carregando = document.getElementById("carregando");		var parametro  = "";		parametro = parametros(parms);		if (parametro != false) {			ajax.open("POST", item, true);			ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");				ajax.onreadystatechange = function() {				if(ajax.readyState == 1) {					carregando.style.visibility = 'visible';				}								if(ajax.readyState == 4) {					if(ajax.status == 200) {						var resultado = ajax.responseText;						if(!resultado) {							carregando.style.visibility = 'hidden';						} else {							resultado = resultado.replace(/\+/g," ");							resultado = unescape(resultado);							pagina.innerHTML = resultado;							carregando.style.visibility = 'hidden';						}					} else {						carregando.style.visibility = 'hidden';						pagina.innerHTML = "Erro ao tentar abrir a página " + item;					}				}			}			ajax.send(parametro)		}	}</script></head><body><form action="ajax.php" method="post" name="formulario" id="formulario"><div id="carregando"></div>  <table width="35%" border="0" align="center" cellpadding="0" cellspacing="0">	<tr> 	  <td width="37%">Código:</td>	  <td width="63%"><input name="codigo" type="text" id="codigo" title="código" size="15" maxlength="15"></td>	</tr>	<tr> 	  <td>Nome:</td>	  <td><input name="nome" type="text" id="nome" title="nome" size="30" maxlength="30"></td>	</tr>  </table>  <br>  <div align="center">	<input name="Enviar" type="button" id="Enviar" onClick="envia('ajax.php','codigo,nome');" value="Enviar">  </div></form><div id="pagina"></div></body></html>

Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal!,Essa função ela é muito legal! Funciona bem, mas têm um porém! Dá problemas quando você tem radio buttons ou checkbox no formulário, se você tiver radio buttons com o mesmo nome, ele somente posta o primeiro que aparecer independente de estar checado ou não. Como resolver essa?[]'sRogério

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.