Помилка JavaScript (Uncaught SyntaxError: Неочікуваний кінець введення)


211

У мене є код JavaScript, який працює у FireFox, але не в Chrome або IE.

На консолі Chrome JS я отримую наступну помилку:

"Uncaught SyntaxError: Несподіваний кінець введення".

Я використовую JavaScript-код:

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

Він говорить про помилку в останньому рядку, який є });


2
Я знаю, що V8 Chrome для DELETEсервера, якщо відповідь була 200, successа не 204, success - no response я отримав би і цю помилку. Просто головуйте на випадок, якщо хтось теж отримає це.
Ерік Д. Джонсон

Відповіді:


401

Додайте секунду });.

При правильному відступі ваш код зчитується

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

Ви ніколи не закривали зовнішню $(function() {.


278
Урок полягає в тому, щоб завжди вводити свій код (і правильно відступати).
СЛАкс

4
О людино, я хочу, щоб мій VIM виявив цю синтаксичну помилку. Я не можу повірити, скільки часу я закінчую витрачати часом на необережні помилки синтаксису.
HeyWatchЦе

4
Урок полягає в тому, що завжди використовуйте хороший редактор з хорошими плагінами, який може виявити спарювання дужок, виділити його або навіть усунути проблеми.
Славомір Ленарт

1
@HeyWatchThis Ви можете спробувати Syntastic for Vim.
Натан Лонг

1
Я використовую neomake для vim / neovim, налаштований на запуск jshint кожного разу, коли я зберігаю файл JavaScript. Якщо у мене є синтаксичні помилки, я побачу символи попередження / помилки у жолобі vim / neovim. Коли я кладу курсор на цей рядок, у командному рядку vim / neovim з'явиться повідомлення про те, що помилка.
trusktr

89

У моєму випадку я намагався розібрати порожній JSON:

JSON.parse(stringifiedJSON);

Іншими словами, сталося таке:

JSON.parse("");

3
Це, на жаль, включає $.parseJSONв себе jquery 1.11.2
Nasser Al-Wohaibi

37

http://jsbeautifier.org/ корисно відступити від мінімізованого коду JS.

Також в Google Chrome ви можете використовувати "симпатичний друк". Дивіться приклад скріншоту нижче, який показує, що jquery.min.jsStack Overflow добре розрізаний прямо з мого браузера :)

введіть тут опис зображення


14

Відформатувавши свій код трохи, ви закрили лише функцію внутрішнього наведення. Ви не закрили зовнішні частини, позначені нижче:

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

5

У моєму випадку це було простою проблемою з подвійною цитатою в моїй закладці , пам’ятайте, використовуйте лише окремі цитати на закладках. Про всяк випадок це комусь допомагає.


3

Я отримав цю помилку, коли намагався написати закладку javascript. Я не міг зрозуміти, що це викликає. Але врешті-решт я спробував URL-адресу, що кодує закладку, через наступний веб-сайт: http://mrcoles.com/bookmarklet/, і тоді помилка пішла, тож, мабуть, проблема з певними символами коду javascript трактувалася як спеціальна URL-адреса контрольні символи.


2
У мене в коментарі js був // коментар, який прокоментував трохи більше, ніж я хотів, оскільки вставте його в URL закладок, зробивши весь код однолінійним, а // - посеред коду.
mflodin

Видалення коментарів виправило це і для мене.
Олексій

3

Ця помилка в основному викликана порожніми поверненими дзвінками ajax при спробі розбору порожнього JSON.

Щоб вирішити цей тест, якщо повернені дані порожні

$.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

У моєму випадку це було спричинено відсутнім (0)у javascript:void(0)якорі.


0

Я отримав це, оскільки мав коментар до файлу, який я додав до свого JS, справді незручна причина того, що відбувається - хоча натиснувши на VMфайл, який попередньо відображається, і виявить помилку, ви дізнаєтеся, що саме помилка в тому, що в моєму випадку це був просто коментар до коду, який я використовував.


0

Я також отримав цю помилку, яка вказує на кінець останнього блоку скриптів на сторінці, тільки щоб зрозуміти, що помилка була насправді від натискання на елемент onclick="pagename"замість onclick="window.location='pagename'". Це не завжди відсутня дужка!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.