Błąd JavaScript (Uncaught SyntaxError: Nieoczekiwany koniec danych wejściowych)


211

Mam kod JavaScript, który działa w FireFox, ale nie w Chrome ani IE.

W konsoli JS Chrome pojawia się następujący błąd:

Msgstr „Nieprzechwycony błąd składni: nieoczekiwany koniec danych wejściowych”.

Używam kodu JavaScript:

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

Mówi, że błąd występuje w ostatnim wierszu });


2
Wiem, że Chrome V8, DELETEna serwerze, jeśli odpowiedź to 200 successzamiast 204 success - no response , dostałbym również ten błąd. Heads up, na wypadek, gdyby ktoś to dostał.
Eric D. Johnson

Odpowiedzi:


401

Dodaj sekundę });.

Po prawidłowym wcięciu twój kod czyta

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

Nigdy nie zamknąłeś zewnętrznego $(function() {.


278
Lekcja polega na tym, że zawsze wcinaj kod (i wcinaj go poprawnie).
SLaks,

4
O rany, chciałbym, żeby mój VIM wyłapał ten błąd składniowy. Nie mogę uwierzyć, ile czasu tracę czasem z nieostrożnymi błędami składni.
HeyWatchTo

4
Lekcja polega na tym, aby zawsze używać dobrego edytora z dobrymi wtyczkami, które mogą wykrywać parowanie nawiasów, zaznaczać je, a nawet naprawiać problemy.
Sławomir Lenart,

1
@HeyWatchThis Możesz wypróbować Syntastic dla Vima.
Nathan Long

1
Używam neomake dla vim / neovim, skonfigurowanego do uruchamiania jshint za każdym razem, gdy zapisuję plik JavaScript. Jeśli mam błędy składniowe, zobaczę symbole ostrzegawcze / błędów w rynsztoku vima / neovima. Kiedy ustawię kursor w tym wierszu, wiersz polecenia vim / neovim wyświetli komunikat informujący o błędzie.
trusktr

89

W moim przypadku próbowałem przeanalizować pusty JSON:

JSON.parse(stringifiedJSON);

Innymi słowy, następowało:

JSON.parse("");

3
To niestety obejmuje $.parseJSONjquery 1.11.2
Nasser Al-Wohaibi

37

http://jsbeautifier.org/ jest pomocny do wcięcia zminimalizowanego kodu JS.

Ponadto w Google Chrome możesz używać „ładnego wydruku”. Zobacz przykładowy zrzut ekranu poniżej jquery.min.jsz przepełnieniem stosu ładnie wcięty bezpośrednio z mojej przeglądarki :)

wprowadź opis zdjęcia tutaj


14

Trochę formatując kod, zamknęłaś tylko funkcję wewnętrznego najechania kursorem. Nie zamknąłeś części zewnętrznych, oznaczonych poniżej:

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

5

W moim przypadku skończyło się to na prostym podwójnym cytacie w mojej książeczce , pamiętaj, że używaj tylko pojedynczych cytatów na książeczkach. Na wypadek, gdyby to komuś pomogło.


3

Wystąpił ten błąd, gdy próbowałem napisać bookmarklet javascript. Nie mogłem zrozumieć, co to spowodowało. Ale w końcu spróbowałem zakodować URL bookmarklet, za pośrednictwem następującej witryny: http://mrcoles.com/bookmarklet/, a następnie błąd zniknął, więc musiał być problem z interpretacją niektórych znaków w kodzie JavaScript jako specjalnego adresu URL znaki kontrolne.


2
Miałem // komentarz w moim js, który skomentował trochę więcej, niż chciałem, ponieważ wklejenie go do adresu URL bookmarkletu uczyniło cały kod jednowierszowym, a // był w środku kodu.
mflodin

Usunięcie komentarzy naprawiło to również dla mnie.
Alex

3

Ten błąd jest spowodowany głównie przez puste zwrócone wywołania ajax, podczas próby przetworzenia pustego JSON.

Aby rozwiązać ten test, jeśli zwrócone dane są puste

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

3

W moim przypadku było to spowodowane brakiem (0)w javascript:void(0)kotwicy.


0

Dostałem to, ponieważ miałem komentarz w pliku, który dodawałem do mojego JS, naprawdę niezręczny powód tego, co się działo - chociaż po kliknięciu VMpliku, który jest wstępnie renderowany i wychwytuje błąd, dowiesz się, co dokładnie błąd polegał na tym, że w moim przypadku po prostu odkomentowałem kod, którego używałem.


0

Dostałem również ten błąd wskazujący na koniec ostatniego bloku skryptu na stronie, tylko po to, aby zdać sobie sprawę, że błąd polegał na kliknięciu elementu onclick="pagename"zamiast zamiast onclick="window.location='pagename'". Nie zawsze brakuje brakującego nawiasu!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.