Я выполняю AJAX-вызов в моем скрипте MooTools, это отлично работает в Firefox, но в Chrome я получаю сообщение Uncaught SyntaxError: Unexpected token :
об ошибке, я не могу определить, почему. Комментируя код, чтобы определить, где плохой код ничего не дает, я думаю, что это может быть проблемой с возвращаемым JSON. Проверяя в консоли, я вижу, что JSON вернул это:
{"votes":47,"totalvotes":90}
Я не вижу никаких проблем с этим, почему эта ошибка произошла?
vote.each(function(e){
e.set('send', {
onRequest : function(){
spinner.show();
},
onComplete : function(){
spinner.hide();
},
onSuccess : function(resp){
var j = JSON.decode(resp);
if (!j) return false;
var restaurant = e.getParent('.restaurant');
restaurant.getElements('.votes')[0].set('html', j.votes + " vote(s)");
$$('#restaurants .restaurant').pop().set('html', "Total Votes: " + j.totalvotes);
buildRestaurantGraphs();
}
});
e.addEvent('submit', function(e){
e.stop();
this.send();
});
});
javascript
mootools
google-chrome
trobrock
источник
источник
Ответы:
Видя красные ошибки
на вкладке консоли разработчика Chrome указывается HTML в теле ответа.
На самом деле вы видите реакцию вашего браузера на неожиданную верхнюю строчку
<!DOCTYPE html>
с сервера.источник
Unexpected token :
. Ваш ответ совершенно не связан с проблемой ОП.Просто FYI для людей, у которых может быть такая же проблема - мне просто нужно было заставить мой сервер отправлять обратно JSON как application / json, и обработчик jQuery по умолчанию работал нормально.
источник
application/json
устранить ошибку. Я не использую JSONP.Это только что случилось со мной, и причина не была ни одной из причин выше. Я использовал команду jQuery getJSON и добавил
callback=?
для использования JSONP (так как мне нужно было переходить в другие области), а также возвращал код JSON{"foo":"bar"}
и получал ошибку.Это потому, что я должен был включить данные обратного вызова, что-то вроде
jQuery17209314005577471107_1335958194322({"foo":"bar"})
Вот код PHP, который я использовал для достижения этой цели, который ухудшается, если используется JSON (без обратного вызова):
Надеюсь, это поможет кому-то в будущем.
источник
Я только что решил проблему. Было что-то, что вызывало проблемы со стандартным вызовом Request, поэтому я использовал этот код:
Если кто-нибудь знает, почему стандартный объект Request доставлял мне проблемы, я хотел бы знать.
источник
this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});
- иди на цифру$$
?Я думал, что добавлю свою проблему и решение в список.
Я получил:
Uncaught SyntaxError: Unexpected token <
и ошибка указывала на эту строку в моем заявлении об успехе ajax:Позже я обнаружил, что в дополнение к результатам json был отправлен HTML с ответом, потому что в моем PHP была ошибка. Когда вы получаете сообщение об ошибке в PHP, вы можете установить его, чтобы предупредить вас с огромными оранжевыми таблицами, и эти таблицы были тем, что выбрасывало JSON.
Я узнал об этом, просто сделав
console.log(response)
, чтобы увидеть, что на самом деле было отправлено. Если это проблема с данными JSON, попробуйте посмотреть, можете ли вы сделать console.log или другой оператор, который позволит вам увидеть, что отправлено и что получено.источник
Когда вы запрашиваете ваш JSON-файл, сервер возвращает JavaScript
Content-Type
header (text/javascript
) вместо JSON (application/json
).Согласно документации MooTools :
В результате MooTools пытается оценить ваш JSON как JavaScript, а когда вы пытаетесь оценить такой JSON:
как JavaScript, парсер обрабатывает
{
и}
как область видимости блока вместо нотации объекта. Это то же самое, что вычисление следующего «кода»:Как вы видете,
:
совершенно неожиданно.Решение состоит в том, чтобы установить правильный
Content-Type
заголовок для файла JSON. Если вы сохраните его с.json
расширением, ваш сервер должен сделать это самостоятельно.источник
Похоже, ваш ответ как-то оценивается. Это дает ту же ошибку в Chrome:
Это связано с тем, что скобки '{...}' интерпретируются javascript как блок кода, а не как литерал объекта, как можно было ожидать.
Я бы посмотрел на функцию JSON.decode () и увидел, есть ли там eval.
Подобная проблема здесь: Eval () = неожиданный токен: ошибка
источник
Если ничего не имеет смысла, эта ошибка также может быть вызвана ошибкой PHP, встроенной в html / javascript, например, приведенной ниже.
Не то, что
<br />
в коде, вставленном PHP в html, вызывает ошибку . Чтобы исправить эту ошибку (подавить предупреждение), используйте этот код в началеДля просмотра щелкните правой кнопкой мыши на странице «Просмотр источника», а затем изучите полный HTML-файл, чтобы определить эту ошибку.
источник
Появление ошибки « Uncaught SyntaxError: Unexpected token », когда ваши данные возвращают неверный формат json, в некоторых случаях вы не знаете, что получили неправильный формат json.
пожалуйста, проверьте это с предупреждением (); функция
полученное сообщение должно быть: {"firstName": "John", "lastName": "Doe"},
а затем вы можете использовать приведенный ниже код
без ошибки « Uncaught SyntaxError: Unnexpected token »,
но если вы ошиблись в формате json,
например:
или
чтобы у вас был неправильный формат json, исправьте его перед JSON.decode или JSON.parse
источник
console.log()
вместоalert()
отладки.Это случилось со мной и сегодня. Я использовал EF и возвращал Entity в ответ на вызов AJAX. Виртуальные свойства моей сущности вызывали ошибку циклической зависимости, которая не обнаруживалась на сервере. При добавлении атрибута [ScriptIgnore] к виртуальным свойствам проблема была исправлена.
Вместо использования атрибута ScriptIgnore, вероятно, было бы лучше просто вернуть DTO.
источник
Это произошло из-за того, что на моем экспресс-сервере я настроил правило для маршрутизации любых 404 обратно в
/#
плюс, каким бы ни был исходный запрос. Разрешение углового маршрутизатора / JS для обработки запроса. Если нет js-маршрута для обработки этого пути,/#/whatever
на сервер делается запрос, который является просто запросом на/
всей веб-страницы.Так, например, если я хотел сделать запрос,
/correct/somejsfile.js
но я пропустил, набрал его, чтобы/wrong/somejsfile.js
запрос был сделан на сервер. Это местоположение / файл не существует, поэтому сервер отвечает с302 location: /#/wrong/somejsfile.js
. Браузер успешно выполняет перенаправление, и вся веб-страница возвращается. Браузер анализирует страницу как js, и вы получаетеТаким образом, чтобы помочь найти неправильный путь / запрос, найдите 302 запроса.
Надеюсь, это поможет кому-то.
источник
У меня была та же проблема, и оказалось, что Json, возвращенный с сервера, не был действительным Json-P. Если вы не используете вызов как междоменный вызов, используйте обычный Json.
источник
Я получил «
SyntaxError: Unexpected token I
», когдаjQuery.getJSON()
пытался десериализовать значение с плавающей запятойInfinity
, закодированное какINF
, что недопустимо в JSON.источник
В моем случае я столкнулся с той же ошибкой при запуске приложения Spring mvc из-за неправильного отображения в моем контроллере mvc
я изменил приведенное выше отображение на
или
источник
Для меня лампочка загорелась, когда я просмотрел источник на странице внутри браузера Chrome. У меня была дополнительная скобка в операторе if. Вы сразу увидите красный круг с крестом на линии провала. Это довольно бесполезное сообщение об ошибке, поскольку токен Uncaught Syntax Error: Unexpected не ссылается на номер строки, когда он впервые появляется в консоли Chrome.
источник
Я сделал неправильно в этом
Я уже инициализировал
fs
переменную. Но снова я вставилvar
вторую строку. Этот также дает такую ошибку ...источник
Для тех, кто испытывал это в AngularJs 1.4.6 или аналогичной, моя проблема заключалась в том, что angular не нашел мой шаблон, потому что файл по указанному
templateUrl
мною (пути) не был найден. Я просто должен был обеспечить доступный путь, и проблема ушла.источник
В моем случае это был ошибочный URL (не существует), поэтому, возможно, ваш 'send' во второй строке должен быть другим ...
источник
Моей ошибкой было забыть одинарные / двойные кавычки вокруг URL в JavaScript:
так неправильный код был:
и правильный код:
источник
Uncaught SyntaxError: Неожиданный токен}
Chrome дал мне ошибку для этого примера кода:
и решил это исправить на клик чтобы быть как
Но ошибка не имеет ничего общего с проблемой ..
источник