Ir para conteúdo

POWERED BY:

Arquivado

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

ronny

enviar grade quantidade de texto via ajax...

Recommended Posts

beleza....acho q aki o luga pra essa duvida...to com 1 pequeno problema qdo vou gravar uma grande qte de texto de um textarea...so ta gravando ate 1491 caracteres....e grava certinho....mais q isso nao faz....no banco de dados o campo eh do tipo longtext...to enviando o texto via ajax assim:

conteudo= escape(document.getElementById("conteudo").value);retorno = xmlhttp.enviar("gera.php?resumo="+ conteudo, "POST", false);
existe quantidade de texto para ser enviada no browser via ajax ???...q estranho...

alguma ideia ??? valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza...depois algum tempo volto com a mesma duvida....to usando esse exemplo pra pegar todos os campos do form de uma so fez + o ajax.php q peguei aki no forum mesmo (http://forum.imasters.com.br/index.php?showtopic=164316)

 

function DecHex(dec2) {  
	var hex_chars = "0123456789ABCDEF";  

	var n1 = hex_chars.charAt(Math.floor(dec2 / 16));  
	var n2 = hex_chars.charAt(dec2 % 16);  

	return n1 + n2;  
}  
function gravar_resultado() {  
	
				var acao = document.relatorio.action;  
				var metodo = document.relatorio.method.toLowerCase();  
	
	var resp = confirm('Confirma a inclusão do relatório?')
	if (resp == true)
	{
		
				  if(!acao) {  
			  alert("erro: o valor action do formulario nao foi definido");  
		  }  
	  
		  var send = new Array();  
		  var elementos = document.relatorio.elements;  
	  
		  for(var i = 0; i < elementos.length; i++)
				 {  
			  var e = elementos[i];  
			  if(!e.name)  
				  continue;  
		  
			  var nVal = "";  
		  
			   for(var x = 0; x < e.value.length; x++) {  
				   codeA = e.value.charCodeAt(x);  
				   codeA = DecHex(codeA);  
				   nVal += "%" + codeA;  
			   }  
		  
			  var tipo = e.type.toLowerCase();  
		  
			  if(tipo != "checkbox" && tipo != "radio")
				 {  
				   send[send.length] = e.name + "=" + nVal;  
			  } else {  
					if(e.checked) {  
					send[send.length] = e.name + "=" + nVal;  
										}  
						}  
		  }  
	  
		 send = send.join("&");  
	 xmlhttp  = new ajax();
		 retorno = xmlhttp.enviar('grava_res.php?' + send , "POST", false);
	 	
	if (retorno) { alert("Relatório gravado com sucesso!");	}
	if (!retorno) { alert("erro: " + xmlhttp.statusText); }	
	   }

}
lembrando q funciona certino....grava no bd legal...mas se for uma grande qte de texto enviado pelo browser, simplesmente nao faz nada...

valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O metodo POST tem um limite de envio..

 

Utilize o metodo GET

 

Abraços....

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza...alterei a linha para GET mas não funcionou...mas nao seria o POST para grande quantidade de texto ?

 

retorno = xmlhttp.enviar('grava_res.php?' + send , "GET", false);

 

outra dica ???

 

pesquisando encontrei esse artigo http://log4dev.com/2006/04/04/envio-de-gra...dados-com-ajax/...entao voltei para o metodo POST...

 

inseri no codigo e continua nao aceitando:

this.xmlhttp.open("POST", url, modo);
			this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			this.xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
			this.xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
			this.xmlhttp.setRequestHeader("Pragma", "no-cache");
			this.xmlhttp.setRequestHeader('Content-length', url.length );						this.xmlhttp.send(url);

alguma ideia ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O metodo POST tem um limite de envio..

 

Utilize o metodo GET

 

Abraços....

Não seria o contrario naum???

 

Creio q o POST naum tenha um limite.

Como o GET usa a url... imagine uma url com 1000 itens, axo q dae ate o navegador se perderia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o post que possui limitação, ele manda as informações no header da solicitação e esse header tem um limite máximo, por isso que o post tem esse limitação, em compensação ganha em segurança pq os dados não ficam tão a mostra

 

Já o metodo get não tem limitação, mas perde em segurança por deixar o que está sendo enviado a vista

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o post que possui limitação, ele manda as informações no header da solicitação e esse header tem um limite máximo, por isso que o post tem esse limitação, em compensação ganha em segurança pq os dados não ficam tão a mostra

 

Já o metodo get não tem limitação, mas perde em segurança por deixar o que está sendo enviado a vista

 

Fala galera, beleza?

Estou tendo problema com a mesma coisa e não consigo encontrar resposta em lugar nenhúm de como resolver isso..

 

Afinal, alguém conseguiu resolver esse problema da quantidade de texto?

O meu código só grava no banco quando tenho pouco texto.. senão ele termina a execução e não grava nada..

 

Agradeço se alguém puder me ajudar com isso.

Segue meu código para entenderem melhor:

 

AlterarUsuario('ajax_press.asp', 'POST', 'true', 'conteudo','action=gravar');

function AlterarUsuario(url, metodo, modo, Id, parametros){
dados		= "action=gravar";
if(QueryString("codigo") != undefined)
	dados += "&id="+QueryString("codigo");
dados 	+= "&tit="+FN_TRATA_HTML(document.getElementById("tit").value);
dados 	+= "&txt="+FN_TRATA_HTML(editor.getHTML());
dados 	+= "&data="+document.getElementById("calendario").value;

goAjax( url+"?"+dados+"&rnd"+ Math.random() , metodo, modo , Id);
}

// FUNÇÃO AJAX
function goAjax(url, metodo, modo, tagRetorno, parametros){
alert(parametros)
// Cria objeto xmlhttp
var xmlhttp;
if (window.XMLHttpRequest){
	// code for IE7+, Firefox, Chrome, Opera, Safari
	xmlhttp = new XMLHttpRequest();
}else if (window.ActiveXObject){
	// code for IE6, IE5
	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}else{
	alert("Your browser does not support XMLHTTP!");
}

if(metodo == "GET"){
	xmlhttp.open("GET", url, modo);
} else {
	xmlhttp.open("POST", url, modo);
	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");
}

xmlhttp.onreadystatechange = function(){
	// xmlhttp.readyState = 0  - O request não foi iniciado
	// xmlhttp.readyState = 1  - O request foi setado
	// xmlhttp.readyState = 2  - O request foi enviado
	// xmlhttp.readyState = 3  - O request está processando
	// xmlhttp.readyState = 4  - O request está completo
	if(xmlhttp.readyState == 0){
		alert("Ocorreu um erro inesperado neste processo. Contate o desenvolvedor para mais informações");
	}else if(xmlhttp.readyState == 1){
		document.getElementById("DivCarregando").style.display="block";
		document.getElementById("ImgCarregando").style.display="block";
	}else if(xmlhttp.readyState == 2){
		document.getElementById("DivCarregando").style.display="block";
		document.getElementById("ImgCarregando").style.display="block";
	}else if(xmlhttp.readyState == 4){
		//document.getElementById("DivCarregando").style.display="none";
		//document.getElementById("ImgCarregando").style.display="none";
	}
}
if(metodo == "GET") {
	xmlhttp.send(null);
} else {
	xmlhttp.send(parametros);
}
}

 

Abs,

Prompt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado prompt, acho melhor você criar um novo tópico e os moderadores fecharem este, pois não acrescenta em nada(muitas informações erradas e confusas).

Não leve em conta as outras respostas. Já tentou observar as configurações de requisição do seu servidor? As vezes tem alguma variável setada por lá com o tamanho.

 

Pelo que vi rapidamente em seu código também, você não está setando no header da requisição o content-length.

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.