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

Fetch API - с помощью response.json() выдает неожиданный конец ошибки ввода

При использовании Fetch API для извлечения некоторого JSON из REST API на моем локальном сервере и попытки разобрать ответ с помощью response.json(), я получаю ошибку unexpected end of input.

Ошибка легко воспроизводится на моем локальном сервере со следующим однострочным:

fetch(new Request('http://localhost:9950/RestService/v2/search/find/1', {mode: 'no-cors'})).then(function(response) { response.json(); });

// Output from Chrome console:
// Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
// VM424:1 Uncaught (in promise) SyntaxError: Unexpected end of input
//     at SyntaxError (native)
//     at <anonymous>:1:128

Если я просмотрю вкладку "Сеть", я вижу, что мой запрос был выполнен сервером, и если я просмотрю ответ, я вижу, что там есть доступный JSON (я дважды проверил это, скопировав и вставив JSON на вкладке "Ответ на сетевое взаимодействие" на странице jsonlint.com). Вот пример ответа, который я получаю с сервера:

{
    "SearchMatches": [{
        "Extracts": ["<b>1<\/b>.txt...", "<b>1<\/b>"],
        "Title": "1.txt",
        "Url": "C:\\TestShare4\\500Docs\\1.txt"
    }]
}

Если я пытаюсь использовать response.text() вместо response.json(), я получаю пустую строку.

Любые мысли о том, где я могу ошибиться с этим?

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

4b9b3361

Ответ 1

У меня была такая же проблема, пытаясь получить некоторый контент из API-схемы instagram и разрешив его с помощью библиотеки jsonp. Это тот, который я использовал: https://github.com/camsong/fetch-jsonp

Мой запрос:

import fetchJsonp from 'fetch-jsonp';     
return fetchJsonp(`https://api.instagram.com/oembed?url=${url}`, {
      method: 'GET',
      mode: 'no-cors',
      credentials: 'include',
    })
      .then(response => response.json())
      .then(response => {});

Надеюсь, это поможет:)