Ir para conteúdo

Arquivado

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

Bruno Cezar Arcanjo Braga

PHP e JSON

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.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

 

 

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.