未捕获的SyntaxError:在位置0的JSON中出现意外的令牌:在对象的JSON.parse(<anonymous>)处.<anonymous>

ric*_*ouw 7 javascript php jquery json

我在JSON.parse()中有一个错误,我有.php文件,其中包含从数据库中检索数据的方法和.js文件中的autoComplete函数,我的.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);
?>
Run Code Online (Sandbox Code Playgroud)

这是我的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);
                        }
                    });
                });
            });
Run Code Online (Sandbox Code Playgroud)

我无法删除JSON.parse(),因为我需要将其从字符串转换为对象,希望有人可以帮助我解决这个问题,我真的很感激.

Mas*_*ile 3

错误发生在您的服务器端,当您的服务器端出现错误时,响应会带有 html 标签“<”,当出现错误时 php 会添加包含错误消息的标签。因此,您的 json 包含 html 标签,并因意外标签而变得无效。

错误出现在这个数组中

$eventstArray[] = array
        (
            'label'         => $eventsQuery2['eventTitle'];
            'venue'         => $eventsQuery2['venueName'];
            'category'      => $eventsQuery2['catDesc'];
            'price'         => $eventsQuery2['eventPrice'];
            'description'   => $eventsQuery2['eventDescription'];
        );
Run Code Online (Sandbox Code Playgroud)

它应该是

$eventstArray[] = array(
            'label' => $eventsQuery2['eventTitle'],
            'venue' => $eventsQuery2['venueName'],
            'category' => $eventsQuery2['catDesc'],
            'price' => $eventsQuery2['eventPrice'],
            'description' => $eventsQuery2['eventDescription']
        );
Run Code Online (Sandbox Code Playgroud)

(问题根源在于描述值后面的分号(;)。它应该只出现在数组的末尾)