PHP и js получают неожиданный токен <в ошибке JSON на локальном хосте - PullRequest
0 голосов
/ 25 апреля 2018

Я знаю, что есть несколько вопросов по этой теме. Я применил к ним, но я все еще получаю эту ошибку

Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0

этот код работает с другими API

getData() {
  fetch('http://localhost:50/data', {
    headers : {
      'Content-Type': 'application/json',
      'Accept': 'application/json'
     }
  })
  .then((response) => { return response.json(); })
  .then((result) => {
    console.log(result);
  });
}

php код

header('Access-Control-Allow-Origin: *');
header('Content-type:application/json;charset=utf-8');
echo json_encode(['data' => 'test']);

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Разработчик Mozilla имеет хорошее руководство по использованию fetch, особенно для начинающих.

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

Я скопировал и вставил примеры кода в Developer Mozilla с полными инициализированными значениями для объекта после URL

fetch(url, {
    body: JSON.stringify(data), // must match 'Content-Type' header
    cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
    credentials: 'same-origin', // include, same-origin, *omit
    headers: {
      'user-agent': 'Mozilla/4.0 MDN Example',
      'content-type': 'application/json'
    },
    method: 'POST', // *GET, POST, PUT, DELETE, etc.
    mode: 'cors', // no-cors, cors, *same-origin
    redirect: 'follow', // manual, *follow, error
    referrer: 'no-referrer', // *client, no-referrer
  })
  .then(response => response.json())

, и это сработало, поэтомуЯ попытался удалить каждое свойство, чтобы посмотреть, не вызовет ли его удаление снова, и обнаружил, что удаление credentials: 'same-origin приведет к ошибке, с которой я столкнулся ранее.

Вы забыли добавить method: 'GET' в свой код,Ваш окончательный код должен выглядеть следующим образом.Надеюсь, это поможет.

  fetch('http://localhost:50/data', {
    method: 'GET',
    credentials: 'same-origin',
    headers : {
      'Content-Type': 'application/json',
      'Accept': 'application/json'
     }
  })
  .then((response) => { return response.json(); })
  .then((result) => {
    console.log(result);
  });
0 голосов
/ 25 апреля 2018

Это неожиданное <, вероятно, означает, что вы вернули HTML вместо JSON. Зарегистрируйте ответ и прочитайте его, это может быть сообщение об ошибке с вашего сервера.

...