我在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(),因为我需要将其从字符串转换为对象,希望有人可以帮助我解决这个问题,对此我深表感谢。
错误在您的服务器端,当您的服务器端发生错误时,响应将带有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'] );
(问题来源是描述值后的 分号 (;)。它只能在数组的 末尾 )