2016-05-13 2 views
9

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

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

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 со вкладки Network Response на jsonlint.com). Вот пример ответа я получаю от сервера:

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

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

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

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

+0

У меня аналогичная проблема, вы решить эту проблему? –

+1

У меня была такая же проблема, и она была решена http://stackoverflow.com/a/35291777/3192470. – lakesare

ответ

0

У меня была такая же проблема, пытаясь получить некоторый контент из API-интерфейсов и разрешить его с помощью библиотеки 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 => {}); 

Надеется, что это помогает :)

+2

Почему мы не можем использовать объект обычной выборки? Странно, что это делает lib по-другому? –

+0

Он добавляет поддержку jsonp-запросов, которые по умолчанию не поддерживаются apch извлечения – keyserfaty

Смежные вопросы