Синтаксическая ошибка: неожиданный токен <
Я пробовал много вещей, и нет способа, всегда появляется эта ошибка
Я попытался использовать только один параметр, чтобы увидеть, прошел ли он, изменил вызов jquery, но не.
Я смотрел в разных местах в Интернете об этой ошибке, но не мог решить или понять, почему это происходит.
На моем компьютере, использующем EasyPHP, отлично работает, но когда я устанавливаю онлайн, это не работает.
Синтаксическая ошибка: неожиданный токен <
Здесь мой код:
$(function(){
$('#salvar').click(function(){
var key = 'salvar';
var title = $('#title').val();
var opcao1 = $('#opcao1').val();
var opcao2 = $('#opcao2').val();
var opcao3 = $('#opcao3').val();
var opcao4 = $('#opcao4').val();
var opcao5 = $('#opcao5').val();
var opcao6 = $('#opcao6').val();
if(title.length > 0){
if(opcao2.length > 0){
$('#resposta').removeClass().html('Salvando a enquete...<br clear="all"><br><img src="images/switch-loading.gif" />');
$.ajax({
type : 'POST',
url : 'funcoes/enquete_adm.php',
dataType : 'json',
data: {key:key,title:title,opcao1:opcao1,opcao2:opcao2,opcao3:opcao3,opcao4:opcao4,opcao5:opcao5,opcao6:opcao6},
success : function(data){
if(data.sql == 'ok'){
$('#resposta').addClass('success-box').html('Enquete Salva!').fadeIn(1000);
$('#control').fadeOut();
}else if(data.sql == 'error'){
$('#resposta').addClass('info-box').html('Ops, aconteceu um erro. Por favor, tente novamente').fadeIn(1000);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest " + XMLHttpRequest[0]);alert(" errorThrown: " + errorThrown);alert( " textstatus : " + textStatus);
}
});
}else{
$('#resposta').addClass('warning-box').html('É necessário no mínimo duas opções');
};
}else{
$('#resposta').addClass('warning-box').html('Coloque a pergunta da enquete');
};
return false;
});
}); // End
Ответы
Ответ 1
Это обычно происходит, когда вы включаете или публикуете файл, который не существует.
Сервер вернет стандартный html-форматированный "404 Not Found", заключенный с
'<html></html>'
теги. Этот первый шеврон < недействителен js или valid json, поэтому он вызывает неожиданный токен.
Что делать, если вы пытаетесь изменить "funcoes/enquete_adm.php" на абсолютный URL-адрес, чтобы быть уверенным?
Ответ 2
У вас нет необходимости ;
(точки с запятой):
Пример здесь:
}else{
$('#resposta').addClass('warning-box').html('É necessário no mínimo duas opções');
};
Недопустимая длина ;
после }
.
Другой пример:
}else{
$('#resposta').addClass('warning-box').html('Coloque a pergunta da enquete');
};
Ответ 3
Я подозреваю, что вы получаете кодировку text/html в ответ на ваш запрос, поэтому я считаю, что проблема такова:
dataType : 'json',
попробуйте изменить его на
dataType : 'html',
Из http://api.jquery.com/jQuery.get/:
DATATYPE
Тип: Строка
Тип данных, ожидаемых от сервера. По умолчанию: Intelligent Guess (xml, json, script или html).
Ответ 4
Ошибка SyntaxError: Unexpected token <
, вероятно, означает, что конечная точка API не вернула JSON в свой документ, например, из-за 404.
В этом случае он ожидает найти a {
(начало JSON); вместо этого он находит <
(начало элемента заголовка).
Успешный ответ:
<html>
<head></head>
<body>
{"foo": "bar", "baz": "qux"}
</body>
</html>
Не найденный ответ:
<html>
<head></head>
<body>
<h1>Not Found</h1>
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>
</body>
</html>
Попробуйте просмотреть URL конечной точки данных в своем браузере, чтобы узнать, что вернулось.
Ответ 5
У меня была аналогичная проблема, и моя проблема заключалась в том, что я отправлял javascript для отображения сообщений консоли.
Даже когда я просматривал файл в своем браузере (а не через приложение), он показывался точно так, как я ожидал (например, дополнительные теги не показывались), но они отображались в выводе html/text и были пытаясь разобраться.
Надеюсь, это поможет кому-то!
Ответ 6
Я подозреваю, что один из ваших скриптов включает URL исходной карты. (Например, миниатюрный jQuery содержит ссылку на исходную карту.)
Когда вы открываете инструменты разработчика Chrome, Chrome попытается извлечь исходную карту из URL-адреса, чтобы помочь отладки. Однако исходная карта на самом деле не существует на вашем сервере, но вместо этого вы отправили регулярную 404 страницу, содержащую HTML.
Ответ 7
Эта ошибка также может возникнуть в результате вызова JSON AJAX на PHP script, который имеет ошибку в своем коде. Серверы часто настраиваются, чтобы возвращать информацию об ошибках PHP, отформатированную с помощью разметки html. Этот ответ интерпретируется как недопустимый JSON, что приводит к "неожиданному токену <" Ошибка AJAX.
Чтобы просмотреть ошибку PHP с помощью Chrome, перейдите на панель "Сеть" в веб-инспекторе, щелкните файл PHP, указанный в левой части, и перейдите на вкладку "Ответ".
Ответ 8
При отправке через ajax всегда рекомендуется сначала подать нормальное сообщение, чтобы гарантировать, что вызываемый файл всегда возвращает действительные данные (json), а также ошибки с тегами html
или другими
<form action="path/to/file.php" id="ajaxformx">
Добавив значение x в id, jquery не будет обрабатывать его.
Как только вы убедитесь, что все в порядке, удалите x
из id="ajaxform"
и пустое значение атрибута action
Вот как я несколько раз пробовал одну и ту же ошибку для себя:)
Ответ 9
У меня также был syntax error: unexpected token <
при отправке формы через ajax. Затем я использовал завиток, чтобы увидеть, что он возвращает:
curl -X POST --data "firstName=a&lastName=a&[email protected]&pass=aaaa&mobile=12345678901&nID=123456789123456789&age=22&prof=xfd" http://handymama.co/CustomerRegistration.php
В ответ я получил что-то вроде этого:
<br />
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>3</b><br />
<br />
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>4</b><br />
<br />
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>7</b><br />
<br />
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>8</b><br />
Итак, все, что мне нужно было сделать, это просто изменить уровень журнала только на ошибки, а не на предупреждение.
error_reporting(E_ERROR);
Ответ 10
i проверил все включенные пути JS
Пример
Измените это
<script src="js/bootstrap.min.js" type="text/javascript"></script>
К
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" type="text/javascript"></script>
Ответ 11
Удаление этой строки из моего кода решило мою проблему.
header("Content-Type: application/json; charset=UTF-8");
Ответ 12
Просто игнорировать параметр, передаваемый как false в функциях java script
Пример:
function getCities(stateId,locationId=false){
// Avoid writting locationId= false kind of statements
/*your code comes here*/
}
Избегайте определения местоположенияId = ложные инструкции, поскольку это даст ошибку в chrome и IE
Ответ 13
Просто брошу это здесь, так как я столкнулся с той же ошибкой, но по ОЧЕНЬ разным причинам.
Я работаю через node/express/jade и переносил старый файл нефрита. Одна из строк заключалась в том, чтобы не срываться, когда Typekit не удалось:
script(type='text/javascript')
try{Typekit.load();}catch(e){}
Это выглядело достаточно безобидным, но я, наконец, понял, что для блоков jade script, где вы добавляете контент, вам нужен .
:
script(type='text/javascript').
try{Typekit.load();}catch(e){}
Простой, но сложный.
Ответ 14
Это произошло со страницей, загруженной через iframe. На странице iframe src была ссылка 404 script. Очевидно, я не смог найти ссылку script на родительской странице, поэтому мне потребовалось некоторое время, чтобы найти виновника.
Ответ 15
убедитесь, что вы не включаете код jquery между
<script> </ script >
Если это удалит, и код будет работать нормально, он работал в моем случае.