一尘不染

未捕获到的SyntaxError:意外标记<在JSON中的位置0:在JSON.parse()在对象上。

json

我在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(),因为我需要将其从字符串转换为对象,希望有人可以帮助我解决这个问题,对此我深表感谢。


阅读 633

收藏
2020-07-27

共1个答案

一尘不染

错误在您的服务器端,当您的服务器端发生错误时,响应将带有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']
        );

(问题来源是描述值后的 分号 (;)。它只能在数组的 末尾

2020-07-27