未捕获到的SyntaxError:意外标记lt;在JSON中的位置0:在JSON.parse()在对象上。
错误在您的服务器端,当您的服务器端发生错误时,响应将带有html标记“ <”,而在发生错误时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']
);
(问题来源是描述值后的 (;)。它只能在数组的 末尾 )
我在JSON.parse()中出错,我有一个.php文件,其中包含从数据库检索数据的方法和用于自动完成功能的.js文件,我的.php文件以字符串形式返回数据,我需要通过使用将其转换为对象JSON.parse()。
这是我的PHP文件
<?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);
?>
这是我的autoComplete.js文件
$(document).ready(function()
{
'use strict';
$.ajax
({
method: "get",url: "requestOffer.php"
})
.done(function(data)
{
var offers = JSON.parse(data);
// now we have the data attach the autocomplete
$('#EOffers').autocomplete
({
minLength:3,source: offers,select: function(event,ui)
{
$('#chosenEvent').text(ui.item.label);
$('#chosenEvent').text(ui.item.vanue);
}
});
});
});
我无法删除JSON.parse(),因为我需要将其从字符串转换为对象,希望有人可以帮助我解决这个问题,对此我深表感谢。
你可能想看: