2012-01-02 16 views
1

こんにちは、変数にdinamically生成された(PHPで)htmlコードを保存し、それをajaxリクエストの返信として送信できるようにしたいと思います。 のは、私はランダムのようなテーブルを生成しましょう:私は可能性がありPHPの変数へのhtmlページの保存

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

:私は、すべての生成されたHTMLコード(残り)を格納する必要が

<?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> 

をし、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のリクエストには、リソースの無駄になるでしょう。 提案がありますか?あなたはファイルに保管する必要はありません

+0

私の提案:「してくださいフレーズ、より具体的な質問」... – rdlowrey

+0

私もストレートコードでHTMLを生成しないことをお勧め。いくつかの種類のテンプレートエンジンを使うほうがいいです(PHPインクルードもうまくいくでしょう)。私の好きなものはTwig(http://twig.sensiolabs.org/) – petraszd

答えて

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> 

More about ob_get_clean()

+0

です。問題は、もし私がhtmlをエコーすると、それはajaxリクエストへの返信として受け取りますか?私はそれをエコーするか、何かをしないで、HTMLを生成する必要があります。 – g0dl3ss

+0

変数にhtmlを格納し、いつでも使用できます。あなたはそれが必要になるまでそれをエコーする必要はありません。 –

+0

ob_start()で内部バッファにhtmlを格納するには、私はそれを生成し、エコーする必要があります。 – g0dl3ss

0

適切な出力バッファリング機能を使用することができますmemcachedを使用してください。

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

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(); 
} 
関連する問題