2016-10-27 19 views
0

PHPで返信したJSONデータに作成した日付関数を追加しようとしています。私は適切に私の別のPHPファイルに関数を割り当てて返信する方法を把握することはできません。この関数は私のメインページ(コメントページ)にあり、このPHPファイルにはありません。JSONで関数に変数を代入して送信する

JSON(普通のPHP SELECTクエリを使用しない場合しかし、私の主なコメントページに、機能が正常に動作します。私は私のコメントのページでそれを行う

このような問題のない(ページ) :

$comment_array[] = $comment_date; 
echo '<div class="comment-post-date">'.fixDate($comment_date). '</div>'; 

これは私が返送されたときに動作していないのphpファイルでそれをやろうか。それは実際にコンソールにエラーを与えている:。

予期しないトークン<

私は、変数として代入し、このようにそれを送り返すしようとすると:

$html .= '<div class="comment-post-date">'.$fixed_comment_date. '</div>';

全コード:

if ($select_comments_stmt = $con->prepare($select_comments_sql)) { 
    $select_comments_stmt->execute(); 
    $rows = $select_comments_stmt->fetchAll(PDO::FETCH_ASSOC); 
    $comments = array(); 
    foreach ($rows as $row) { 
     $comment_date = $row['date']; 
     $fixed_comment_date = fixDate($comment_date); 
     $html = ""; 
     $html .= '<div class="comment-post-box" id="comment-'.$row['id'].'">'; 
     //$html .= '<img class="home-comment-profile-pic" src="'.$row['img'].'">'; 
     $html .= sprintf(
      '<img class="home-comment-profile-pic" src="%s">', 
      empty($row['img']) ? 'profile_images/default.jpg' : $row['img'] 
     ); 
     $html .= '<div class="comment-post-info-block">'; 
     $html .= '<div class="comment-post-username">'.$row['username']. '</div>'; 
     $html .= '<div class="comment-post-date">'.$fixed_comment_date. '</div>'; 
     $html .= '</div>'; 
     $html .= '<div class="comment-post-text">'.$row['comment']. '</div>'; 
     $html .= '</div>'; 
     $data = array('id' => $row['id'], 'date' => $row['date'], 'html' => $html); 
     $comments[] = $data; 
    } 
} 
echo json_encode($comments); 

私はこの仕事を得ることができますどのように任意のアイデア?

+0

私は '$ htmlの= 'に割り当てられたバージョンで問題が表示されません。どんな問題がありますか? – Barmar

+0

JSONを返す場合は、スクリプト内に他の 'echo'ステートメントを置くことはできません。しかし、 'echo '

';'を削除し、その代わりに '$ html'に割り当てたときに修正したようです。 – Barmar

+0

それは単にクエリを壊し、この時点からコメントを選択しません。私はコードを正常に働いた日付に関数を追加しようとする前に。 – Paul

答えて

3

Unexpected token <は、通常、スクリプトが出力されなかったことを意味します。JUST json違法JSONであるhtml + jsonを出力します。

JSONがレスポンスとして期待されるリクエストを行っている場合、実際のJSONレスポンス以外のOTHER出力はJSON構文エラーとして扱われます。

<div>行の最初の<はすでにJSON構文エラーであるため、

echo '<div>blahblalblah</div>'; 
echo json_encode($whatever): 

は、あなたの予期しないトークンエラーが発生します。

これはまた、出力されるPHP警告/エラーのようなものも応答の一部となり、またALSOが構文エラーを引き起こすことを意味します。

+0

私の他のhtml div文のすべてはこれよりも前に働いていました。それは私のfixDate関数を含めるように私の日付ラインを修正したばかりです。 – Paul

+0

あなたのスクリプトのRAW出力を見て、PHPの警告/エラーがないか調べます。明示的に何かを出力していないとしても、悪いコードでも、あなたのjsonを破壊する出力を引き起こす可能性があります。 –

+0

これは私のコメントページに送り返されています。 '致命的なエラー:未定義の関数fixDate()を呼び出します。これを追加しようとしているphpファイルは、厳密にコメントとそのデータを選択するためのものです。このページにも関数を追加する必要がありますか? – Paul

0

jsonのHTMLコードでは、mysqlの結果のみを使用しないでください。

$comments['id'][] = $row['id']; 
$comments['username'][] = $row['username']; 
//next one 
//next one 
//next one 
echo json_encode($comments); 

とJSコードで:。

var count = json.id.length; 

for(var i = 0; i<count; i++) 
{ 
    var id = json.id[i]; 
    var username = json.username[i]; 
} 
関連する問題