Chrome: Uncaught SyntaxError: неожиданный конец ввода



при загрузке моей страницы в Google Chrome, я получаю неопределенную ошибку в консоли:




Uncaught SyntaxError: неожиданный конец ввода




Я понятия не имею, что вызывает его. Как бы я пошел об отладке этой ошибки?

1064   13  

13 ответов:

эта конкретная ошибка является одним раздражающим фактом о V8. В большинстве случаев ваш JavaScript каким-то образом нарушается. Например, отсутствует } или что-то подобное.

приведенный пример, это также приведет к "неожиданному концу ввода":

eval('[{"test": 4}') // notice the missing ]

но основная причина проблем, похоже, заключается в том, что запрошенный url JSON имеет Content-Type на text/html который Chrome, по-видимому, пытается разобрать как HTML, что затем приводит к неожиданному концу ввод из-за того, что изображение теги анализе.

попробуйте установить Content-Type до text/plain Я думаю, что это должно исправить проблемы.

тем не менее, V8 может сделать лучшую работу о том, чтобы сказать точно здесь вход неожиданно закончился.

попробуйте Firebug для Mozilla - он покажет положение отсутствующего }.

http://getfirebug.com/

посмотреть мой случай по другому аналогичный вопрос:

в моем случае я пытался разобрать пустой JSON:

JSON.parse(stringifiedJSON);

другими словами, произошло следующее:

JSON.parse("");

Я получаю эту ошибку, когда я ommitted закрывающий символ скобки (}) в коде JavaScript. Убедитесь, что ваши брекеты правильно сбалансированы.

для записи, для тех, кто пытается найти различные причины этой ошибки. Пустой атрибут данных HTML5

data-mydata = ''

вызывает ошибку тоже. Вы должны проверить, когда значение данных является нулевой строкой и не включать атрибут вообще. Само собой разумеется, что это в значительной степени относится к сценарию сгенерированного HTML.

проблема для меня была в том, что я делал $.Аякс с dataType: "json" для запроса POST, который возвращал HTTP 201 (созданный) и без тела запроса. Исправление состояло в том, чтобы просто удалить этот ключ/значение.

JSHint хорошо находит расположение отсутствующих скобок или плохой синтаксис.

еще одна причина этой ошибки: если ваш API намеренно отвечает без тела ответа, но отвечает с 200 OK код состояния вместо 204 No Content код состояния. Некоторые библиотеки JavaScript могут плохо реагировать на неожиданные типы контента, когда нет контента, поэтому используйте правильный код состояния!

там определенно будет открытая скобка, которая вызвала ошибку.

Я бы предложил вам открыть страницу в Firefox, а затем открыть Firebug и проверить консоль – она покажет отсутствующий символ.

пример скриншота:

Firebug highlighting the error

моя проблема была с кешем Google Chrome. Я проверил это, запустив свое веб-приложение на Firefox, и я не получил эту ошибку там. Поэтому я решил попробовать очистить кэш Google Chrome, и это сработало.

Я столкнулся с аналогичной проблемой, используя директиву UI bootstrap для angularjs-uib-datepicker, при нажатии переключателя am/pm.

ошибка в обработчике событий для (неизвестно): SyntaxError: неожиданный конец Ввод в JSON углового элемента управления datepicker

оказалось, что это из-за плагина 'Trans-over' (что переводит слово при нажатии). Может быть, мой ответ кому-то поможет, потому что я ничего не нашел в интернете.

Так как это асинхронная операция onreadystatechange может произойти до загрузки значения в responseText, попробуйте использовать window.setTimeout(function () { JSON.parse(xhr.responseText); }, 1000); чтобы увидеть, если ошибка сохраняется? Бол

у меня была эта ошибка и исправил ее, добавив охранника на readyState и status показано здесь:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
          // Your code here
   }
};

Comments

    Ничего не найдено.