解析数据以显示新数据

时间:2016-10-25 03:15:53

标签: javascript php jquery json ajax

我正在创建一个评论系统。截至目前,我正在尝试返回发布的评论,但只发布新发布的评论,使用AJAX,setInterval并解析JSON数据。我不确定我做错了什么,但我收到了一个synatax错误:JSON输入意外结束。

有没有人看到我做错了什么或者有更好的方法吗?

HTML

<form action="" method="POST" id="comment-form">
            <textarea id="home_comment" name="comment" placeholder="Write a comment..." maxlength="1000" required></textarea><br>
            <input type="hidden" name="token" value="<?php echo Token::generate(); ?>">
            <input id="comment-button" name="submit" type="submit" value="Post">
        </form>
        <div id="comment-container">

AJAX

function commentRetrieve(){

        $.ajax({ 
                url: "ajax-php/comment-retrieve.php",
                type: "get",
                success: function (data) {
                //  console.log(data);
                    if (data == "Error!") {
                        alert("Unable to retrieve comment!");
                        alert(data);
                    } else {
                        var array = JSON.parse(data);
                        $(array).each(function($value) {
                            if($('#comment-container').find('#comment-' + $value.id).length == 0) {
                                $('#comment-container').prepend($value.html);
                            }
                        });
                    }
                },
                error: function (xhr, textStatus, errorThrown) {
                    alert(textStatus + " | " + errorThrown);
                    console.log("error"); //otherwise error if status code is other than 200.
                }
            });


    }
    setInterval(commentRetrieve, 3000);

PHP

$user = new User();

        //Get the last insert id
            $select_comments_sql = "
            SELECT c. *, p.user_id, p.img
            FROM home_comments AS c
            INNER JOIN (SELECT max(id) as id, user_id 
                        FROM profile_img 
                        GROUP BY user_id) PI
              on PI.user_id = c.user_id
            INNER JOIN profile_img p
              on PI.user_id = p.user_id
             and PI.id = p.id
            ORDER BY c.id DESC
        ";

        if ($select_comments_stmt = $con->prepare($select_comments_sql)) {
            //$select_comments_stmt->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $select_comments_stmt->execute();
            $rows = $select_comments_stmt->fetchAll(PDO::FETCH_ASSOC);
            foreach ($rows as $row) {
                $comment_id = $row['id'];
                $comment_user_id = $row['user_id'];
                $comment_username = $row['username'];
                $home_comments = $row['comment'];
                $comment_date = $row['date'];
                $commenter_user_id = $row['user_id'];
                $commenter_img = $row['img'];
                $commenter_img = '<img class="home-comment-profile-pic" src=" '.$commenter_img.'">';
                if ($home_comments === NULL) {
                    echo 'No comments found.';
                } else {
                    $html = "";
                    $html .= '<div class="comment-post-box">';
                    $html .= $commenter_img;
                    $html .= '<div class="comment-post-username">'.$comment_username. '</div>';
                    $html .= '<div>'.$comment_date. '</div>';
                    $html .= '<div class="comment-post-text">'.$home_comments. '</div>';
                    $html .= '</div>';
                    array('id' => $comment_id, 'html' => $html);
                }
            }
        }

修改:图片

enter image description here

0 个答案:

没有答案