Ошибка синтаксического анализа JSON: нераспознанный токен '?' в реакции родной - PullRequest
0 голосов
/ 29 апреля 2018

Я работаю над проектом React Native и пытаюсь преобразовать данные с сервера в JSON . Я уже сделал это на других проектах, поэтому я знаю, как это работает, но на этот раз у меня есть ошибка: " Ошибка синтаксического анализа JSON: нераспознанный токен" <'</strong> ".

Вот мой код:

fetch('https://app.fr', {
        method: 'POST',
        headers: new Headers({
            'Content-Type': 'application/x-www-form-urlencoded',
        }),
    })
        .then((response) => response.json())

Когда я делаю response.text () вместо этого, я получаю строку, которая является правильным форматом JSON. Итак, я знаю, данные не проблема.

fetch('https://app.fr', {
        method: 'POST',
        headers: new Headers({
            'Content-Type': 'application/x-www-form-urlencoded',
        }),
    })
.then((response) => response.text())

После просмотра форумов я обнаружил, что ошибка может заключаться в том, что сервер отправляет мне данные с типом содержимого "text / html" вместо "application / json". И да, сервер отправляет мне данные с типом контента "text / html" .

Поэтому я попытался изменить тип содержимого в шапке:

 fetch('https://app.fr', {
        method: 'POST',
        headers: new Headers({
            'Content-Type': 'application/json',
        }),
    })
        .then((response) => response.json())

Но я получил эту ошибку: " Ошибка синтаксического анализа JSON: нераспознанный токен '?' "

Так что я подумал, что это означает, что мне нужно напрямую изменить тип содержимого данных на сервере. Но я не могу этого сделать, потому что мой клиент использует эти данные для других проектов.

Знаешь ли ты какую-либо возможность преобразовывать в данные JSON с типом содержимого "text / html", не получая такой ошибки?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Я нашел проблему!

В клиенте данных, присланном мне, был невидимый первый персонаж. Когда я рендерил его на своем телефоне, я увидел "{" message ":" ok "," testes ": ...}, но когда я вошел в консоль, я увидел, что перед первым" {"был странный символ , Я удалил его с помощью response.text (). Substring (1), и он работает!

Спасибо за ваши ответы!

0 голосов
/ 29 апреля 2018

На самом деле мне нужно отправить несколько параметров POST. Смотрите ниже:

fetch('https://app.fr', {
    method: 'POST',
    headers: new Headers({
        'Content-Type': 'application/x-www-form-urlencoded',
    }),
    body: "tab_mobile=2",
})
 .then((response) => response.text())

Если я установлю tab_mobile на 1, я получу:

{"message":"ok","tests":[{"id":"54","token":"6604","id_test":"20","Nom_prenom":"Alain DUPONT","Titre_du_test":"SIT 212 situation 1","fait":"0"},{"id":"55","token":"5066","id_test":"21","Nom_prenom":"Alain DUPONT","Titre_du_test":"SIT 212 situation 2","fait":"0"}]} 

Если я установлю tab_mobile на 2, я получу:

 {"message":"error"}

Я пытался проанализировать эти JSON с

JSON.parse(response.text())

Если tab_mobile = 1, я получаю "Ошибка синтаксического анализа JSON: нераспознанный токен '<'" </strong>. Но если я установлю tab_mobile на 2, я не получаю ошибку. Я могу событие сделать

alert(JSON.parse(response.text()).message)

и открываются окна с ошибкой.

Заключить: Когда я получаю {"message": "error"}, я могу разобрать его в JSON, чтобы подумать, что отправленные данные имеют правильный формат JSON. Но когда я получаю полные данные {"message": "ok", tests: [{...}, {...}]}, я не могу разобрать их в JSON.

У вас есть идеи, что я могу сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...