JavaScript-Fehler (Ungefangener Syntaxfehler: Unerwartetes Ende der Eingabe)

211

Ich habe JavaScript-Code, der in FireFox funktioniert, aber nicht in Chrome oder IE.

In der Chrome JS-Konsole wird der folgende Fehler angezeigt:

"Ungefangener SyntaxError: Unerwartetes Ende der Eingabe".

Der von mir verwendete JavaScript-Code lautet:

<script>
 $(function() {
 $("#mewlyDiagnosed").hover(function() {
    $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
 }, function() {
    $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
 });
</script>

Es heißt, der Fehler befindet sich in der letzten Zeile });

Phillip
quelle
2
Ich weiß, dass Chrome V8 für einen DELETEauf dem Server, wenn die Antwort 200 successstatt 204 war success - no response , diesen Fehler ebenfalls erhalten würde. Nur Kopf hoch, falls jemand das auch bekommt.
Eric D. Johnson

Antworten:

401

Fügen Sie eine Sekunde hinzu });.

Bei richtigem Einzug lautet Ihr Code

$(function() {
    $("#mewlyDiagnosed").hover(function() {
        $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
    }, function() {
        $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
    });
MISSING!

Du hast das Äußere nie geschlossen $(function() {.

SLaks
quelle
278
Die Lektion ist, immer Ihren Code einzurücken (und ihn richtig einzurücken).
SLaks
4
Oh Mann, ich wünschte mein VIM hätte diesen Syntaxfehler abgefangen. Ich kann nicht glauben, wie viel Zeit ich manchmal mit unachtsamen Syntaxfehlern verschwende.
HeyWatchThis
4
Die Lektion ist, immer einen guten Editor mit guten Plugins zu verwenden, der das Koppeln von Klammern erkennen, hervorheben oder sogar Probleme reparieren kann.
Sławomir Lenart
1
@HeyWatchThis Sie könnten Syntastic for Vim ausprobieren.
Nathan Long
1
Ich verwende neomake für vim / neovim, konfiguriert, um jshint jedes Mal auszuführen, wenn ich eine JavaScript-Datei speichere. Wenn ich Syntaxfehler habe, werden Warn- / Fehlersymbole in der Gosse von vim / neovim angezeigt. Wenn ich den Cursor auf diese Zeile setze, wird in der Befehlszeile vim / neovim eine Meldung angezeigt, die besagt, was der Fehler ist.
trusktr
89

In meinem Fall habe ich versucht, einen leeren JSON zu analysieren:

JSON.parse(stringifiedJSON);

Mit anderen Worten, was geschah, war Folgendes:

JSON.parse("");
Falsarella
quelle
3
Dies schließt leider $.parseJSONjquery 1.11.2
Nasser Al-Wohaibi
37

http://jsbeautifier.org/ ist hilfreich, um Ihren minimierten JS-Code einzurücken.

Mit Google Chrome können Sie auch "Pretty Print" verwenden. Siehe den folgenden Screenshot, der zeigt jquery.min.js, wie der Stapelüberlauf direkt von meinem Browser aus gut eingerückt ist :)

Geben Sie hier die Bildbeschreibung ein

Hugo
quelle
14

Wenn Sie Ihren Code ein wenig formatieren, haben Sie nur die innere Schwebefunktion geschlossen. Sie haben die unten markierten Außenteile nicht geschlossen:

$(// missing closing)
 function() { // missing closing }
     $("#mewlyDiagnosed").hover(
        function() {
            $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
        }, 
        function() {
            $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
        });
hvgotcodes
quelle
5

In meinem Fall war es ein einfaches Problem mit doppelten Anführungszeichen in meinem Lesezeichen. Denken Sie daran, nur einfache Anführungszeichen für Lesezeichen zu verwenden. Nur für den Fall, dass dies jemandem hilft.

Yëco
quelle
3

Ich habe diesen Fehler erhalten, als ich versucht habe, ein Javascript-Lesezeichen zu schreiben. Ich konnte nicht herausfinden, was es verursachte. Aber irgendwann habe ich versucht, die URL für das Lesezeichen über die folgende Website zu codieren: http://mrcoles.com/bookmarklet/, und dann ist der Fehler behoben. Daher muss es ein Problem gewesen sein, dass bestimmte Zeichen im Javascript-Code als spezielle URL interpretiert wurden Steuerzeichen.

user280109
quelle
2
Ich hatte einen // Kommentar in meinem js, der etwas mehr auskommentierte, als ich wollte, da das Einfügen in die URL des Lesezeichens den gesamten Code zu einem Einzeiler machte und das // sich in der Mitte des Codes befand.
Mflodin
Das Entfernen von Kommentaren hat es auch für mich behoben.
Alex
3

Dieser Fehler wird hauptsächlich durch leere zurückgegebene Ajax-Aufrufe verursacht, wenn versucht wird, einen leeren JSON zu analysieren.

Um diesen Test zu lösen, wenn die zurückgegebenen Daten leer sind

$.ajax({
    url: url,
    type: "get",
    dataType: "json",
    success: function (response) {

        if(response.data.length == 0){
            // EMPTY
        }else{
            var obj =jQuery.parseJSON(response.data);
            console.log(obj);
        }
    }
});
Jimmy Obonyo Abor
quelle
3

In meinem Fall war es durch eine fehlende verursacht (0)in javascript:void(0)in einem Anker.

Sam
quelle
0

Ich habe dies erhalten, da ich einen Kommentar in einer Datei hatte, die ich meinem JS hinzugefügt habe, ein wirklich unangenehmer Grund für das, was vor sich ging. Wenn Sie jedoch auf die VMDatei klicken , die vorgerendert wurde und den Fehler abfängt, werden Sie herausfinden, was genau das ist Fehler war, in meinem Fall war es einfach, einen von mir verwendeten Code zu kommentieren.

Jack Hales
quelle
0

Ich habe auch diesen Fehler erhalten, der auf das Ende des letzten Skriptblocks auf einer Seite zeigt, nur um zu erkennen, dass der Fehler tatsächlich durch Klicken auf ein Element mit einem onclick="pagename"statt verursacht wurde onclick="window.location='pagename'". Es fehlt nicht immer eine Klammer!

justanotherguy
quelle