webentwicklung-frage-antwort-db.com.de

SyntaxError nicht abgerufen: Unerwartetes Token <in JSON an Position: at JSON.parse (<anonymous>) at Object. <Anonymous>

ich habe einen Fehler in JSON.parse (), ich habe eine .php-Datei, die eine Methode zum Abrufen von Daten aus der Datenbank und einer .js-Datei für die Funktion autoComplete enthält, meine .php-Datei gibt Daten als String zurück und ich muss sie mithilfe von in ein Objekt konvertieren JSON.parse ().

das ist meine PHP-Datei

<?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);
?>

und dies ist meine autoComplete.js-Datei 

$(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);
                        }
                    });
                });
            });

ich kann das JSON.parse () nicht entfernen, weil ich das brauche, um von String zu Objekt zu konvertieren. Ich hoffe, jemand kann mir helfen, das zu lösen, und ich schätze das wirklich.

5
richard houw

Der Fehler ist auf Ihrer Serverseite aufgetreten. Wenn auf Ihrer Serverseite ein Fehler auftritt, wird die Antwort mit den HTML-Tags "<" angezeigt, wenn ein Fehler auftritt. PHP fügt ein Tag mit der Fehlermeldung hinzu. Daher enthält Ihr Json die HTML-Tags und wird aufgrund unerwarteter Tags ungültig.

Der Fehler befindet sich innerhalb dieses Arrays

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

es sollte sein 

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

(Die Problemquelle war das Semikolon (;) nach dem Beschreibungswert . Es sollte nur am end des Arrays liegen.)

2
Masivuye Cokile

Dieser Fehler tritt normalerweise auf, wenn der in JSON.parse angegebene Wert tatsächlich undefiniert ist. Ich würde also den Code überprüfen, der versucht, dies zu analysieren - höchstwahrscheinlich analysieren Sie nicht die hier gezeigte Zeichenfolge.

0
anis programmer

Überprüfen Sie, ob nur die json-codierte Antwort zurückgeworfen wird. Wenn Sie Dinge wie var dump im PHP-Skript tun, stellen Sie sicher, dass Sie es auskommentieren, da es auch an Ihre Javascript-Antwort angehängt wird

0

Aktivieren Sie diese Option, wenn Sie sicher sind, dass Ihr PHP-Code korrekt ist, der zurückgegebene JSON-String jedoch nicht analysiert werden kann.

Ich hatte ein ähnliches Problem. Was ich fand, war, dass mein PHP Code als UTF8 gespeichert wurde, aber ohne die No-BOM-Option. Das fügte drei zusätzliche Zeichen hinzu: ο "Ώ (hex: EF BB BF) am Anfang von Die Datei, die den zurückgegebenen JSON-String veranlasst, diese zusätzlichen Zeichen am Anfang zu haben.

hier ist wie der anfang meiner php datei: o "Ώ <? php include ...

preview of code in hex mode

0
Dimitrios

Es ist ein serverseitiger Fehler. Sie können den vom Server zurückgegebenen Wert (PHP-Code) mithilfe der Entwickler-Tools des Browsers wie Firefox überprüfen und die Antwortnachricht überprüfen.

Außerdem können Sie möglicherweise JSON.parse () entfernen und dataType hinzufügen: "json" in der Ajax-Funktion

0
Asmin Jismun