Como passar uma variavel de grande tamanho via AJAX ?

25/07/2016

0

PHP

Ola a todos,

Não consegui achar nada que resolve-se meu problema,

Eu tenho um editor de texto em minha aplicação, é um editor Summernote onde funciona como o Word e etc. Agora preciso fazer com que meu sistema pegue todo o conteudo que o usuario digitou e formatou e jogue em uma pagina PHP, onde la, eu tenho um código que gera o PDF.

O problema é que o mPDF que estou trabalhando, só gera o PDF se o conteudo estiver numa variavel PHP, até ai tudo bem, eu passo a variavel via AJAX, e pego no PHP, porém, o texto pode ser muito grande, e conter 5mil caracteres ou mais, pq toda a formatação feita pelo editor, é transformada em HTML, incluindo todos os codigos HTML tornando a variavel maior que o conteudo do texto. quando a variavel chega no PHP, o mPDF gera apenas uma parte do texto. dai persebi a limitação dos dados via POST ou GET.

Como posso resolver meu problema ? pensei em gerar um arquivo TXT quando o usuario clicar no botao imprimir, e depois abri-lo via PHP, porem o javascript é cliente-side e nao grava no diretorio da minha aplicação na web.




var editor = $('#RelatorioEditor').code(); //Aqui contem mais de 5mil caracteres


$.ajax({
url : 'Conf_editor.php',
type : 'GET',
data: 'VarConsulta=GERAR_ARQUIVO&Conteudo='+editor,
dataType: 'json',
success: function(data){

window.document.location = "gerar_pdf.php";

}

});
Fernando Alves

Fernando Alves

Responder

Posts

25/07/2016

Raylan Zibel

Tenta converter pra base64 e veja se passa. "btoa()" no js, se não me engano.
Responder

25/07/2016

William

Existe sim limitações por navegadores mas via GET.

De uma olhada nas configurações no php.ini via POST, deve estar para 2 MB.
Responder

25/07/2016

Fernando Alves

Oi Galera,

Acabei resolvendo de outra forma,

Na verdade, não era o limite via POST que estava ocorrendo, e sim um conflito de caracteres especiais. Pois como eu estava passando uma pagina de códigos em HTML via AJAX, quando tinha um comando de "espaço" que em HTML é o comando "& q u o t" então o AJAX entendia que o "&" era um separador de elementos POST, por isso só chegava parte do texto HTML no outro lado do PHP. Então eu fiz o seguinte:

Tratando a variavel com replace no JAVASCRIPT:
texto_string = texto_string.replace(/&/g, ''00UTF8'');
assim desta forma, não entra em conflito no AJAX,

E para voltar com o comando novamente, eu troco pelo replace do PHP desta vez dentro do PHP:

Tratando a variavel com replace no PHP:
$relatorio = str_replace("00UTF8","&",$relatorio);
, Pronto, Tratamos o codigo e devolvemos intacto!

Agradeço pela dica de vocês,

Abraços!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar