Array
(
)

Como passar uma variavel de grande tamanho via AJAX ?

PHP
Fernando Alves
   - 25 jul 2016

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.

Citação:

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";

}

});

Raylan
|
MVP
Pontos: 690
    25 jul 2016

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

William (devwilliam)
   - 25 jul 2016

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.

Fernando Alves
   - 25 jul 2016

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:

Citação:
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:

Citação:
$relatorio = str_replace("00UTF8","&",$relatorio);
, Pronto, Tratamos o codigo e devolvemos intacto!

Agradeço pela dica de vocês,

Abraços!