Подтвердить что ты не робот

Синтаксическая ошибка: неожиданный токен <

Я пробовал много вещей, и нет способа, всегда появляется эта ошибка Я попытался использовать только один параметр, чтобы увидеть, прошел ли он, изменил вызов 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
4b9b3361

Ответ 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 >

Если это удалит, и код будет работать нормально, он работал в моем случае.