我正在尝试将我创建的日期函数添加到我用PHP发回的JSON数据中。我无法弄清楚如何在我单独的php文件中正确分配函数并发回。该功能在我的主页面(评论页面)而不是在这个php文件中。
但是,在我的主评论页面上,当不使用JSON(只是一个普通的PHP SELECT
查询时,该函数运行正常。
我在我的评论页面(没有问题的页面)上这样做:
$comment_array[] = $comment_date;
echo '<div class="comment-post-date">'.fixDate($comment_date). '</div>';
这是我尝试在发回的php文件中执行此操作的方法。它实际上是在控制台中出错:
意外的令牌&lt;
我尝试将其指定为变量,然后将其发回:
$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 :(得分:3)
Unexpected token <
通常意味着您的脚本没有输出 JUST json。它输出html + json,这是非法的JSON。
如果您正在请求将JSON作为响应,那么除了实际的json响应之外的任何OTHER输出都将被视为JSON语法错误。
e.g。
echo '<div>blahblalblah</div>';
echo json_encode($whatever):
会导致意外的令牌错误,因为<
行中的第一个<div>
已经是JSON语法错误。
这也意味着输出的PHP警告/错误之类的内容也将成为响应的一部分,并且还会触发语法错误。
答案 1 :(得分: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];
}