Я выполняю вызов AJAX в моем скрипте MooTools, это прекрасно работает в Firefox, но в Chrome я получаю Uncaught SyntaxError: Неожиданный токен :
ошибка, я не могу определить почему. Комментирование кода, чтобы определить, где находится плохой код, ничего не дает, я думаю, что это может быть проблема с возвращаемым 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();
});
});
Увидев красные ошибки
непойманные синтаксис ошибка: непредвиденная лексема <
в вашем разработчика Chrome's в консоли вкладку часто указывает на 301 редирект что может быть вызвано странное правило в Вашему .файл htaccess.
То, что вы'вновь вижу ваш браузер'с реакцией на неожиданные верхнюю строку в <!Элемент DOCTYPE в HTML>
от сервера.
К сведению тех, у кого может возникнуть такая же проблема - я просто заставил свой сервер отправлять JSON в формате application/json, и стандартный обработчик jQuery заработал нормально.
Это только что произошло со мной, и причиной тому не была ни одна из вышеперечисленных причин. Я использовал команду jQuery getJSON и добавил callback=?
, чтобы использовать JSONP (так как мне нужно было работать с кросс-доменами), и возвращал JSON-код {"foo":"bar"}
и получал ошибку.
Это происходит потому, что я должен был включить данные обратного вызова, что-то вроде jQuery17209314005577471107_1335958194322({"foo":"bar"})
.
Вот PHP-код, который я использовал для достижения этого, который ухудшается, если используется JSON (без обратного вызова):
$ret['foo'] = "bar";
finish();
function finish() {
header("content-type:application/json");
if ($_GET['callback']) {
print $_GET['callback']."(";
}
print json_encode($GLOBALS['ret']);
if ($_GET['callback']) {
print ")";
}
exit;
}
Надеюсь, это поможет кому-нибудь в будущем.
Я только что решил эту проблему. Что-то вызывало проблемы со стандартным вызовом Request, поэтому вот код, который я использовал вместо него:
vote.each(function(element){
element.addEvent('submit', function(e){
e.stop();
new Request.JSON({
url : e.target.action,
onRequest : function(){
spinner.show();
},
onComplete : function(){
spinner.hide();
},
onSuccess : function(resp){
var j = resp;
if (!j) return false;
var restaurant = element.getParent('.restaurant');
restaurant.getElements('.votes')[0].set('html', j.votes + " vote(s)");
$$('#restaurants .restaurant').pop().set('html', "Total Votes: " + j.totalvotes);
buildRestaurantGraphs();
}
}).send(this);
});
});
Если кто-нибудь знает, почему стандартный объект Request вызывал у меня проблемы, я был бы рад узнать.
Я думал, что я'd-добавить мой вопрос и разрешению в список.
Я получаю: `непойманные синтаксис ошибка: непредвиденная лексема < и ошибка указывает на эту строку в своем выступлении успехи "Аякса":
var total = $.parseJSON(response);
Позже я обнаружил, что в дополнение к результаты в формате JSON, там был HTML был послан с ответом, потому что у меня была ошибка в мой PHP. Когда вы получаете сообщение об ошибке в PHP вы можете установить его, чтобы предупредить вас с огромный апельсин таблиц и эти таблицы были тем, что скинув с JSON.
Я узнал об этом, просто делаю `консоли.отчет(ответ) для того, чтобы увидеть, что было на самом деле направляется. Если это'ов проблемы с JSON-данные, просто попробовать, чтобы увидеть, если вы можете сделать консоли.журнал или что-то другое, что позволит вам видеть, что отправлено и что получено.
Когда вы запрашиваете ваш файл JSON, сервер возвращает содержимое-типа JavaScript заголовок
(текст/JavaScript
) вместо JSON (приложение/JSON
).
По данным в MooTools документы:
ответы с содержанием типа JavaScript будет оцениваться автоматически.
В MooTools результате пытается оценить свой JSON в JavaScript, и при попытке оценить такой формат JSON:
{"votes":47,"totalvotes":90}
как JavaScript, парсер обрабатывает {
и }
в качестве рамки блока вместо объекта нотации. Это так же, как оценки следующие на "код" и:
"votes":47,"totalvotes":90
Как вы можете видеть, :
есть совершенно неожиданное.
Для решения проблемы нужно задать заголовок правильный тип содержимого
файл JSON. Если вы сохраните его с .расширение формата JSON
, ваш сервер должен сделать это сам.
Похоже, что ваш ответ будет как-то оцениваться. Это дает ту же ошибку в Chrome:
var resp = '{"votes":47,"totalvotes":90}';
eval(resp);
Это связано с брекетами '{...}' будучи интерпретирована с помощью JavaScript как блок кода, а не литерал объекта, как можно было бы ожидать.
Я бы посмотрел на JSON.декодировать() функцию и посмотреть, если есть eval в там.
Подобный вопрос здесь: https://stackoverflow.com/questions/7985450/eval-unexpected-token-error
Если ничего не имеет смысла, эта ошибка также может быть вызвана ошибка PHP, которая встраивается в HTML/JavaScript, как показано ниже
<br />
<b>Deprecated</b>: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in <b>C:\Projects\rwp\demo\en\super\ge.php</b> on line <b>54</b><br />
var zNodes =[{ id:1, pId:0, name:"ACE", url: "/ace1.php", target:"_self", open:true}
Не в <БР />
и т. д. В коде, которые вставляются в HTML с помощью PHP вызывает ошибку. Исправить такого рода ошибки (подавить предупреждение), использовал этот код в начале
error_reporting(E_ERROR | E_PARSE);
Чтобы посмотреть, щелкните правой кнопкой мыши на странице и"просмотреть исходный код" и затем просмотрите полный HTML, чтобы определить эту ошибку.
Это случилось со мной сегодня. Я использую эф и возвращение объекта в ответ на AJAX-вызов. Виртуальные свойства на мое лицо вызывает циклическую ошибку зависимостей, которые не могут быть обнаружены на сервере. Путем добавления атрибута [ScriptIgnore] на виртуальной свойства, проблема была решена.
Вместо того, чтобы использовать атрибут ScriptIgnore, наверное, было бы лучше просто вернуться в ДТО.
на "непойманный синтаксис ошибка: непредвиденная лексема" В ошибки появление когда ваши данные вернуться неверный формат JSON, в некоторых случаях, вы не'т знаю, что вы получили неправильный формат JSON. пожалуйста, проверьте его с Alert(); функция
onSuccess : function(resp){
alert(resp);
}
полученные сообщения должны быть: {с"имя" и:"у Иоанна-то", то "фамилия" и:"по Доу и"} и затем вы можете использовать код ниже
onSuccess : function(resp){
var j = JSON.decode(resp); // but in my case i'm using: JSON.parse(resp);
}
при ошибке "непойманный синтаксис ошибка: непредвиденная лексемаи" но если вы получаете неправильный формат JSON экс:
...{С"имя" и:"у Иоанна-то", то "фамилия" и:"по Доу и"}
или
Undefined variable: errCapt in .... on line<b>65</b><br/>{"firstName":"John", "lastName":"Doe"}
так что у вас есть неправильный формат JSON, пожалуйста, исправить ее до вас в JSON.расшифровать или JSON.парсить
Это произошло, потому что у меня есть настройки на моей экспресс-сервер для маршрутизации 404 обратно в /#
плюс то, что первоначальный запрос был. Позволяя угловой маршрутизатор/JS для обработки запроса. Если там's нет в JS маршрута обработки, что путь, запрос на /#/все на сервера, который просто запрос на
/`, всю веб-страницу.
Так, например, если я хочу сделать запрос на /correct/somejsfile.js-но я скучаю по его напечатали в
/wrong/somejsfile.jsзапрос к серверу. Что местоположение файла не существует, так что сервер отвечает
302 расположение: /#/wrong/somejsfile.js`. Браузер радостно повторяет редирект и все страницы вернулись. Браузер анализирует страницу JS и вы получите
непойманные синтаксис ошибка: непредвиденная лексема <
Поэтому, чтобы помочь найти нарушителя пути/запрос искать 302 запросы.
Надеюсь, что помогает кто-то.
У меня была такая же проблема и оказалось, что JSON, возвращаемый с сервера там'т допустимый JSON-П. Если вы Don'т использовать вызов как междоменных вызовов используйте обычный формат JSON.
В моем случае это был ошибочный URL-адрес (не существующие), так что, возможно, у вас 'отправить' во второй строке должны быть другие...
В моем случае я столкнулся с той же ошибкой, при запуске весна MVC-приложения в связи с неправильным отображением в мой контроллер MVC
@RequestMapping(name="/private/updatestatus")
я изменил выше сопоставление
@RequestMapping("/private/updatestatus")
или
@RequestMapping(value="/private/updatestatus",method = RequestMethod.GET)
У меня "в синтаксис ошибка: неожиданный знак Я" когда я использовал библиотеку jQuery.помощью метода getjson ()
, чтобы попытаться де-сериализовать значение с плавающей точкой "бесконечность", закодированы как инф
, которое является незаконным в JSON.
Для меня погас свет, когда я просматривать исходный на страницу в браузере Хром. У меня была лишняя скобка в операторе if. Вы'll немедленно увидеть красный круг с крестом в нем на не линии. Это'ы довольно бесполезное сообщение об ошибке, т. к. непойманные ошибка синтаксиса: неожиданный знак отсутствует ссылка на номер строки, когда он впервые появляется в консоли хрома.
Для тех, кто испытывает это на AngularJS 1.4.6 или похожие, моя проблема была с углового не найдя свой шаблон, потому что файл в templateUrl` (путь) я предоставил бы'т быть найдены. Я просто должен был обеспечить достижимое путь и проблема ушла.
Непойманный синтаксис ошибка: неожиданный знак }
Хром гавед мне ошибку на этот код:
<div class="file-square" onclick="window.location = " ?dir=zzz">
<div class="square-icon"></div>
<div class="square-text">zzz</div>
</div>
и решить ее фиксации onclick Для быть как
... onclick="window.location = '?dir=zzz'" ...
Но ошибка не имеет ничего общего с проблемой..