Jump to content

Recommended Posts

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.

 

 

 

Share this post


Link to post
Share on other sites

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.

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.