1

嗨,我想将动态生成的(使用 php)html 代码存储到变量中,并能够将其作为对 ajax 请求的回复发送。假设我随机生成一个表格,如:

<?php 
$c=count($services);
?>
<table>
<?php
for($i=0; $i<$c; $i++){
 echo "<tr>";
 echo "<td>".$services_global[$i][service] ."</td>";
 echo "<td>".$services_global[$i][amount]."</td>";
 echo "<td>&euro; ".$services_global[$i][unit_price].",00</td>";
 echo "<td>&euro; ".$services_global[$i][service_price].",00</td>";
 echo "<td>".$services_global[$i][service_vat].",00%</td>";
 echo "</tr>";
}
?>
</table>

我需要存储所有生成的 html 代码(以及其余代码)并将其作为 json 编码变量回显,例如:

$error='none';
$result = array('teh_html' => $html, 'error' => $error);
$result_json = json_encode($result);
echo $result_json;

我也许可以生成一个 html 文件,然后阅读它:

ob_start();
//all my php generation code and stuff
file_put_contents('./tmp/invoice.html', ob_get_contents());
$html = file_get_contents('./tmp/invoice.html');

但这听起来是错误的,因为我真的不需要生成代码,而只是将它发送到我的主页作为对 ajax 请求的回复,这将浪费资源。有什么建议么?

4

3 回答 3

9

您不必将其存储在文件中,只需使用适当的输出缓冲功能即可

// turn output buffering on
ob_start();

// normal output
echo "<h1>hello world!</h1>";

// store buffer to variable and turn output buffering offer
$html = ob_get_clean();

// recall the buffered content
echo $html; //=> <h1>hello world!</h1>

更多关于 ob_get_clean()

于 2012-01-02T20:19:37.553 回答
0

如果重新生成数据非常昂贵,那么我建议您使用memcached

否则我会每次都重新生成它或将它缓存在前端。

于 2012-01-02T20:25:49.490 回答
0
for($i=0;$i<=5;$i++)
{
    ob_start();
    $store_var = $store_var.getdata($i); // put here your recursive function name
    ob_get_clean();
}

function getdata($i)
{
    ?>
    <h1>
    <?php
      echo $i;
    ?>
    </h1>
    <?php
    ob_get_contents();
}
于 2013-02-18T18:46:04.217 回答