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
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 に答える
0

データの再生成に非常にコストがかかる場合は、memcachedを使用することをお勧めします。

それ以外の場合は、毎回再生成するか、フロントエンドにキャッシュします。

于 2012-01-02T20:25:49.490 に答える