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

Uncaught SyntaxError: Неожиданный токен <В Chrome

Я знаю, что этот вопрос задавался много раз, но я не могу найти сходство с моей проблемой. Я получаю эту ошибку только в Chrome, в любом другом браузере все в порядке. Я возвращаю данные с помощью JSON в нескольких местах, но поскольку мой код работает в других браузерах, я предполагаю, что с ним ничего не случилось. Chrome не показывает мне, где ошибка (в моем коде) он показывает мне эти ошибки:

enter image description here

Вот как я использую JSON:

$.post("getData.php", {'id' : id}, function(data){
        var obj = jQuery.parseJSON(data);
.
.
.

... some mysqli query
$data = $query->fetch_assoc();
echo json_encode($data);

Итак, я не вижу здесь проблемы, может ли кто-нибудь помочь мне с этим.

4b9b3361

Ответ 1

Ошибка с Uncaught SyntaxError: Unexpected token < с использованием ответа @Mario, но это было только частью моей проблемы. Другая проблема заключается в том, что javascript не получает никаких данных из файла PHP. Это было решено с помощью этого кода внутри файла PHP: header("Content-Type: text/javascript; charset=utf-8"); Этот ответ найден по этой ссылке, где я открыл еще один вопрос для решения этой проблемы: Невозможно получить json-данные из PHP в Chrome и Opera

Ответ 2

Вы можете проверить свою сеть (консоль) и посмотреть ответ с сервера... "<" будет первой буквой вашего ответа. Что-то вроде "<" undefined индекс XY в строке Z > "

Ответ 3

Мое решение для этого довольно невероятно.

<script type="text/javascript" src="/js/dataLayer.js?v=1"></script>

Имя файла в атрибуте src должно быть строчным:

<script type="text/javascript" src="/js/dataLayer.js?v=1"></script>

и это несколько необъяснимо устранило проблему.

В обоих случаях ссылка возвращалась на проверку 404.

Ответ 4

Я получил ту же ошибку ( "Uncaught SyntaxError: Неожиданный токен <" ) в этих двух строках при тестировании образца приложения.

<script type = "text/javascript"  src="raphael-min.js"></script>
<script type = "text/javascript"  src="kuma-gauge.jquery.js"></script>

После элемента управления я понял, что локальные локальные расположения файлов неверны, а локальное серверное приложение возвращает страницу по умолчанию в качестве результата. Клиентское приложение может находить файлы, но созданные файлы - это страница по умолчанию, а не файлы *.js. Поэтому я получаю Uncaught SyntaxError: Неожиданный токен <

Я изменил исходное местоположение на intenet и решил.

<script type = "text/javascript"  src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.2/raphael-min.js"></script>
<script type = "text/javascript"  src="//www.jqueryscript.net/demo/Creating-Animated-Gauges-Using-jQuery-Raphael-js-kumaGauge/js/kuma-gauge.jquery.js"></script>

Ответ 5

Чтобы переопределить ошибку, которая может возникнуть в Chrome (и, вероятно, в Safari), попробуйте установить параметр Ajax как dataType: "json". Тогда вы не должны называть parseJSON() на obj, потому что ответ, который вы получите, десериализуется.

Ответ 6

Я прокомментировал мой код: // $('#description').val('<?php echo $_POST['description']; ?>');, и я получил эту ошибку.

Ответ 7

header("Location: route_to_main_page");

Я столкнулся с этой проблемой, имея собственный файл обработки ошибок 404. Вместо того, чтобы бросать некоторый html-контент, он должен был перенаправить на URL главной страницы. Он работал хорошо.

Затем я использовал это как скелет для следующего проекта, поэтому не изменять "route_to_main_page" на самом деле в новом проекте (другой URL-адрес) стал "route_to_external_url", поэтому любые ошибки 404 в вашем коде (отсутствующие стили CSS, js-библиотеки ) вернет " Uncaught SyntaxError: Неожиданный токен <".

Ответ 8

Если вы пытаетесь выполнить загрузку файла Ajax или что-то подобное, вам нужно избавиться от отображения дополнительного HTML после печати вашего текста ответа ajax. Вероятно, это дает это сообщение об ошибке. Если вы используете фреймворк PHP, вам нужно следовать синтаксису каркаса для завершения приложения. Если вы кодируете чистый PHP, вы можете использовать "exit" после вашего текста ответа ajax.

Надеюсь, это поможет сэкономить время на поиск решения для этого.:) счастливое кодирование!!!

Ответ 9

измените его на

$.post({ 
         url = 'getData.php',  
         data : { 'id' id } , 
         dataType : 'text'
       });

Таким образом, ajax не будет пытаться анализировать данные в json или аналогичных

Ответ 10

Кажется, у всех есть различия между этими и этими решениями:) Это моя "история".

Моя вещь взята из файла validate.php, полученного с помощью ajax. Результат должен был быть:

$response['status'] = $status;
$response['message'] = $message;
$response['param'] = $param;

echo json_encode($response);

И ошибка, вызывающая "Неожиданный токен <" ошибка была просто в том, что в некоторых случаях сообщение $message не было объявлено (но только $status и $param). Итак, добавьте это в начало кода.

$message = ''; // Default value, in case it doesn't get set later on.

Итак, я думаю, эти "мелочи" могут в этом сценарии иметь большое значение. Поэтому обязательно проверьте свой код и сделайте его пуленепробиваемым.

Ответ 11

Была та же ошибка. Моя проблема была вызвана перемещением моего каталога проекта и невозможностью настроить путь к моим статическим файлам на сервере, чтобы отразить новый путь (т.е. Был ./src/public, но должен был быть ./public).

Ответ 12

Я столкнулся с подобной проблемой, когда я переместил некоторые из файлов js в папки, затем развернуты в производство, после некоторой борьбы выяснилось, что файлы js фактически не были развернуты на производство. Итак,

  • убедитесь, что файл, для которого показана ошибка, существует в сервер
  • правильный путь

Итак, в отсутствие js файла сервер затем отвечает сервером, как показано ниже

<!doctype html>
    <html>
        <someTag />
        <AnotherTag />
    </html>

Вот почему мы получаем Uncaught SyntaxError: Неожиданный токен <

Ответ 13

Единственное место, где он работал у меня, - это когда я помещаю скрипты в папку public, где находится мой index.html, а затем помещаю эти теги <script type="text/javascript" src="test/test.js"></script> в тег <body>.

Ответ 14

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

Попробуйте добавить это в свой файл Web.Config(это для приложений .NET):

<location path="js/resourcefile.js">
  <system.web>
    <authorization>
      <allow users="?" />
    </authorization>
  </system.web>
</location>

Вы можете поместить его где угодно до закрытия тега конфигурации.