Bruno Cezar Arcanjo Braga 0 Denunciar post Postado Fevereiro 9, 2018 Olá, tenho uma função que me retorna um JSON, conforme abaixo: function output_header($sucesso = true, $mensagem = null, $dados = array()) { header('Content-Type: application/json; charset=utf-8'); echo json_encode( array( 'sucesso' => $sucesso, 'mensagem' => $mensagem, 'dados' => $dados ) ); exit; } Até agora, ela tem funcionado muito bem, pois retornava apenas conteúdo de selects do banco de dados. O problema é que agora, antes de retornar o JSON, eu preciso gerar um arquivo HTML e retornar para a função apenas o nome do arquivo gerado. <!-- Fim do conteúdo html e exportação do arquivo <?php $arquivo = "temp/" . geraString() . ".html"; $html = ob_get_contents(); file_put_contents($arquivo, $html); return $arquivo; ?> Está tudo funcionando, exceto um único detalhe: O resultado deveria ser apenas o array: {"sucesso":true,"mensagem":"Relat\u00f3rio gerado com sucesso.","dados":"temp\/mjzfiCmZAGSss3wgCQjx.html"}, mas está vindo todo o conteúdo HTML junto. Chamo a função assim: localhost/teste/relatorios.php?pessoa_id=441165 A página relatorios.php chama uma função que está dentro de impostoRenda.php. Essa função monta o html que deverá ser enviado ao cliente e deve retornar via JSON apenas o URL, mas, como já disse, está retornando todo o conteúdo da página gerada por impostoRenda.php. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Impressão de Relatório</title> <link rel="stylesheet" type="text/css" href="http://localhost/GMobileWS/css/relatorios.css" /> <style> .borda { border-left: none; border-right: none; border-top: none; } </style> <style type="text/css" media="print"> @page { size: landscape; } </style> </head> <body> //conteúdo da página </body> </html> temp/mjzfiCmZAGSss3wgCQjx.html{"sucesso":true,"mensagem":"Relat\u00f3rio gerado com sucesso.","dados":"temp\/mjzfiCmZAGSss3wgCQjx.html"} Alguma ideia? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Cezar Arcanjo Braga 0 Denunciar post Postado Fevereiro 9, 2018 Chamei uma terceira página, que recebe o nome do arquivo via GET e chama a função que gera o JSON. Aí resolveu. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Fevereiro 9, 2018 http://php.net/manual/en/function.ob-get-contents.php Citar Gets the contents of the output buffer without clearing it. O buffer sempre será enviado para o navegador. Você deve limpar o buffer antes: http://php.net/manual/en/function.ob-end-clean.php Citar This function discards the contents of the topmost output buffer and turns off this output buffering. If you want to further process the buffer's contents you have to call ob_get_contents() before ob_end_clean() as the buffer contents are discarded when ob_end_clean() is called. Compartilhar este post Link para o post Compartilhar em outros sites