我在获取AJAX响应作为JSON时遇到问题。我的网站是https://www.msrumon.com/academic。一切正常,除了一个。选择“类别:HSC”和“主题:数学”,然后注意控制台。它说:
Uncaught SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at XMLHttpRequest.boss.onreadystatechange (academic:125)
(据我所知),这意味着一个字符串未正确转换为JSON字符串。我花了更多的时间,发现一个数据库表列正在造成此问题。我来详细解释一下:
fetch_academic.php :
if(isset($_POST['class']) && isset($_POST['subject']))
{
$boss = $db->selectdb('select academic.id, AcademicClass.ClassName, AcademicSubject.SubjectName, academic.title, academic.content from academic join AcademicClass on academic.class = AcademicClass.ClassID join AcademicSubject on academic.subject = AcademicSubject.SubjectID where class = '.$_POST['class'].' and subject = '.$_POST['subject'].' and status != 0');
$counter = isset($boss) ? count($boss) : 0;
if($counter == 0) echo json_encode(array('ok' => false));
else echo json_encode(array('ok' => true, 'number' => $counter, 'boss' => $boss));
}
academic.content
包含纯HTML代码,每一行的代码完全不同。如果我从SQL中排除它,则对于特定的选择对不会出现此错误。这是longtext
类型的列,用于 HSC / Mathematics 选择,长度为41410个字符。
现在我的问题是:如何找到意外终止JSON输入的确切位置?或者说,有人可以帮我找到它吗?
[附言-您可以从Sources
标签访问原始代码。]