我在JSON.parse()中有错误,我有.php文件,其中包含从数据库中检索数据的方法和.js文件中的autoComplete函数,我的.php文件以字符串形式返回数据,我需要将其转换为使用JSON.parse()。
这是我的php文件
.replaceAll("[\\W_]", "%");
这是我的autoComplete.js文件
<?php
include_once("database_conn.php");
function request($conn)
{
$eventstArray = array();
$events = "SELECT *
FROM te_events,te_category,te_venue
WHERE te_events.venueID = te_venue.venueID
AND te_events.catID = te_category_catID
ORDER BY 1
";
$eventsQuery1 = mysqli_query($conn,$events) or DIE (mysqli_error($conn));
while($eventsQuery2 = mysqli_fetch_array($eventsQuery1))
{
$eventstArray[] = array
(
'label' => $eventsQuery2['eventTitle'];
'venue' => $eventsQuery2['venueName'];
'category' => $eventsQuery2['catDesc'];
'price' => $eventsQuery2['eventPrice'];
'description' => $eventsQuery2['eventDescription'];
);
}
return json_encode($eventstArray);
}
echo request($conn);
?>
我无法删除JSON.parse(),因为我需要将其从字符串转换为对象,希望有人可以帮我解决这个问题,我真的很感激。
答案 0 :(得分:2)
错误在您的服务器端,当您的服务器端出现错误时,响应带有html标签'&lt;'当出现错误时,php将添加带有错误消息的标记。因此,您的json包含html标记,并且由于意外标记而变为无效。
错误在此数组
中
$eventstArray[] = array
(
'label' => $eventsQuery2['eventTitle'];
'venue' => $eventsQuery2['venueName'];
'category' => $eventsQuery2['catDesc'];
'price' => $eventsQuery2['eventPrice'];
'description' => $eventsQuery2['eventDescription'];
);
应该是
$eventstArray[] = array(
'label' => $eventsQuery2['eventTitle'],
'venue' => $eventsQuery2['venueName'],
'category' => $eventsQuery2['catDesc'],
'price' => $eventsQuery2['eventPrice'],
'description' => $eventsQuery2['eventDescription']
);
(问题来源是描述值后面的分号(;))。 它应该只在数组的 end
答案 1 :(得分:0)
当给予JSON.parse的值实际上未定义时,通常会看到该错误。所以,我会检查试图解析它的代码 - 很可能你没有解析这里显示的实际字符串。
答案 2 :(得分:0)
这是服务器端错误。您可以使用浏览器的开发人员工具(如firefox)检查服务器返回的值(php代码)并检查响应消息。
另外,也许你可以删除JSON.parse()并在ajax函数中添加dataType:“json”
答案 3 :(得分:0)
检查是否仅将json编码的响应仅返回。如果您在php脚本中执行var dump之类的操作,请确保将其注释掉,因为它也会附加到您的javascript响应中
答案 4 :(得分:0)
如果您确定您的php代码正确无误,但无法解析返回的json字符串,请选中此选项。
我有类似的问题。 我发现我的PHP代码已保存为UTF8,但没有No-BOM选项。 这增加了三个额外的字符:ο»Ώ(十六进制:EF BB BF) 在文件的开头,导致返回的json字符串的开头有那些额外的字符。
这是我的php文件的开头: ο»Ώ<?php include ...