2016-08-29 10 views
1

ページが読み込まれたときにPHPスクリプトを実行しているときに問題が発生し、実際に表示したくない出力がページに表示されます。私はエコーを隠そうとしました。jsonとajaxリクエストでPHPエコー出力を隠す

<div style='display:none> 

しかし、まだ動作しません。 「AjaxとJSON Encode関数()」は、「同じページにAjaxリクエストを作成する」というこの問題を解決するのに役立つという考えがあります。しかし、私は本当に、結果を担当するhtmlとphp変数をエンコードする配列を作成する方法を知らない。助けてください。

ここに出力を表示する私のajax関数があります。

function mass() 
{ 
    $.ajax({ 
     url: "page.php", 
     cache: false, 
     success: function(html){ 
      $("#container").html(html); 
     } 
    }); 
} 

は、ここでは、この@enance

$query="SELECT * FROM `comments` ORDER BY id ASC"; 
$result = mysql_query($query); 

if (isset($_REQUEST['AnswerId'])){ 
    $AnswerId = $_REQUEST['AnswerId']; 
} 
else { 
    $AnswerId = 0; 
}    

$i=0; 
while ($mytablerow = mysql_fetch_row($result)) { 
    $mytable[$i] = $mytablerow; 
    $i++; 
} 

function tree($treeArray, $level, $pid = 0) { 
    global $AnswerId; 
    if (! $treeArray) { 
     return; 
    } 
    foreach($treeArray as $item) { 
     if ($item[1] == $pid) { 
     ?> 
     <div class="Div" style="margin-left:<?php echo($level*60);?>px">  
     <div class="CotDiv"> 
     <div class="ser"><?php echo($item[2]) ; ?></div> 
     <div class="Mse"><?php echo($item[3]) ; ?></div> 
     <div class="ito"><?php echo($item[4]) ; ?></div> 
     <?php    
     if ($level<=40) { 
      echo '<a href="" class="ReplyLink" onclick="AnswerComment('.$item[0].');return false;">Reply</a>'; } 
      echo '<a href="" class="DeleteLink" onclick="DeleteComment('.$item[0].');return false;">Delete</a>'; 
      ?> </div> <?php 

      if ($AnswerId == $item[0]){?> 
       <div id="InnerDiv"><?php ShowForm($AnswerId);?</div><?php ?> </div><?php 
       echo ('<br/>'); 
       tree($treeArray, $level+1, $item[0]); 
      }  
     } 
    } 
    tree($mytable, 0); 
?> 
+0

Ajaxレスポンスに表示するコンテンツの量を教えてください。必要なコンテンツがない場合は、Ajaxリクエストを呼び出さないでください。 – jedifans

+0

ajaxレスポンスに表示するデータは、divsタグ

のデータです。どのように表示するのですか? – enance

+0

'ob_ *'を試してみてください。出力バッファリングのサウンドは、好きなようにhttp://php.net/manual/en/function.ob-start.php – ArtisticPhoenix

答えて

2

はまったく同じコードではありませんページの出力を保持する私のPHPスクリプトですが、考え方は同じです。テストするmysql出力のサンプル配列がないので、これはおそらく正しく出力されません。

グローバルを使用せず、変数を関数に渡すだけで十分です。時間のために、私はこの関数内にhtmlの出力を保っていましたが、理想的には別の関数を通してhtmlを出力したいと思うでしょう。

<?php 
// example array 
$mytable = [ 
[1,0,3,4,5,6], 
[0,2,3,4,5,6] 
]; 

$answer_id = 1; 

function tree($answer_id, $items, $level, $pid = 0) { 
    if (empty($array)) 
    return; 

    foreach ($items as $item) { 

    if ($item[1] == $pid) { 
     echo sprintf('<div class="Div" style="margin-left:%spx">',$level * 60); 
     echo '<div class="CotDiv">'; 
     echo sprintf('<div class="ser">%s</div>', $item[2]); 
    } 

    if ($level <= 40) { 
     echo sprintf('<a href="" class="ReplyLink" onclick="AnswerComment(%s);return false;">Reply</a>', $item[0]); 
     echo sprintf('<a href="" class="DeleteLink" onclick="DeleteComment(%2);return false;">Delete</a>', $item[0]); 
    } 

    echo '</div>'; 

    if ($answer_id == $item[0]) { 
     echo sprintf('<div id="InnerDiv">%s</div>', 'FORM OUTPUT HERE'); 
     tree($answer_id, $items, $level++, $item[0]); 
    } 

    echo '</div>'; 
    } 

} 

tree($answer_id, $mytable, 0); 
exit; 

本当にこれが正しい軌道に乗るのに役立ちます。

関連する問題