2013-09-01 5 views
51

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

Скажет ли он, какой файл в консоли? – Sergio

+1

ошибка должна была дать вам номер файла и строки, вывести конкретную строку, на которую указывает. –

+0

Я не помню, где я нашел ошибку. Но был в php-коде. –

ответ

12

У вас есть ненужные ; (точка с запятой):

Пример здесь:

}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'); 
}; 
91

Это обычно происходит, когда вы включаете или размещая в файл, который не существует. сервер возвращает обычный HTML-формате "404 Not Found" прилагается

'<html></html>' 

тегов. Этот первый chevron < недействителен js или действительный json, поэтому он вызывает неожиданный токен.

Что делать, если вы пытаетесь изменить «funcoes/enquete_adm.php» на абсолютный URL-адрес, чтобы быть уверенным?

+0

Странно, потому что у меня есть несколько других команд, использующих JS-URL одинаково, и он отлично работает, я просто дал вам эту проблему. И на моем ПК отлично работает, когда на сервер не работает. –

+0

Спасибо. Это сработало для меня. Я неправильно использовал имя файла js. – lwdthe1

0

Просто игнорировать параметр прохождения как ложна в Java Script функций

Ex:

function getCities(stateId,locationId=false){  

    // Avoid writting locationId= false kind of statements 
    /*your code comes here*/ 

} 

Избегайте сочинительство locationId = ложь рода заявления, поскольку это даст ошибку в хроме и IE

2

У меня была аналогичная проблема, и моя проблема заключалась в том, что я отправлял javascript для отображения сообщений консоли.

Даже когда я просматривал файл в своем браузере (а не через приложение), он показывался точно так, как я ожидал (например, дополнительные теги не показывались), но они отображались в выводе html/text и пытались разобраться.

Надеюсь, это поможет кому-то!

2

Я подозреваю, что один из ваших сценариев содержит source map URL. (Например, миниатюрный jQuery содержит ссылку на исходную карту.)

Когда вы открываете инструменты разработчика Chrome, Chrome попытается извлечь исходную карту из URL-адреса, чтобы помочь отладки. Однако исходная карта на самом деле не существует на вашем сервере, но вместо этого вы отправляете регулярную 404 страницу, содержащую HTML.

0

Просто отправьте это здесь, так как я столкнулся с той же ошибкой, но по ОЧЕНЬ разным причинам.

Я обслуживаю узел/express/jade и переносил старый файл нефрита. Одна из линий была не Борк, когда Typekit не удалось:

script(type='text/javascript') 
    try{Typekit.load();}catch(e){} 

казалось достаточно безобидным, но я, наконец, понял, что для нефритовых блоков сценариев, где вы добавляющих содержание вам нужно .:

script(type='text/javascript'). 
    try{Typekit.load();}catch(e){} 

Простой, но сложный.

1

Эта ошибка также может возникать при вызове JSON AJAX скрипту PHP, который имеет ошибку в коде. Серверы часто настраиваются, чтобы возвращать информацию об ошибках PHP, отформатированную с помощью разметки html. Этот ответ интерпретируется как недопустимый JSON, что приводит к ошибке «неожиданный токен <» AJAX.

Чтобы просмотреть ошибку PHP с помощью Chrome, перейдите на панель «Сеть» в веб-инспекторе, щелкните файл PHP, указанный слева, и перейдите на вкладку «Ответ».

1

При проводке через AJAX, это всегда хорошая идея, чтобы первым подать, как правило, чтобы обеспечить файл, который вызывается всегда возвращается действительные данные (JSON) и никаких ошибок с html тегов или других

<form action="path/to/file.php" id="ajaxformx"> 

Добавляя х к значению id, jquery не будет обрабатывать его.

После того, как вы уверены, что все в порядке, то удалить x из id="ajaxform" и пустого значения атрибута action

Это, как я отсортирован та же ошибка, для себя всего несколько минут назад :)

6

I подозреваю, что вы получаете текст/HTML кодирования в ответ на запрос, поэтому я считаю, что вопрос:

dataType : 'json', 

попробуй изменить его

dataType : 'html', 

От http://api.jquery.com/jQuery.get/:

DATATYPE Тип: String Тип данных, ожидаемых от сервера. По умолчанию: Intelligent Guess (xml, json, script или html).

+0

Бог благословит вас в изобилии. Ты спас меня после 12 часов поиска! – user1930402

1

У меня также был 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); 
0

Это произошло со страницей, загруженной через iframe. На странице iframe src была ссылка на скрипт 404.Очевидно, я не мог найти ссылку на сценарий на родительской странице, поэтому мне потребовалось некоторое время, чтобы найти виновника.

4

Ошибка SyntaxError: Unexpected token < вероятно означает, что API конечной точки не возвращать JSON в теле документа, например, из-за 404.

В этом случае он рассчитывает найти { (начало 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 Терминала данных в вашем браузере, чтобы увидеть, что вернулся.

+0

Удивительный! Благодарю. – mendez7

0

убедитесь, что вы не включая код Jquery между

< скрипт> </скрипт>

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

1

я проверил все включено 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> 
1

Удаление этой строки из моего кода решить мою проблему.

header("Content-Type: application/json; charset=UTF-8"); 
Смежные вопросы