使用Fetch API从本地服务器上的REST API获取某些JSON并尝试使用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()
,我会收到一个空字符串。
有关我可能出错的地方的任何想法吗?
请注意,我要求不依赖于浏览器本机支持的任何其他框架或库。
答案 0 :(得分:0)
我遇到同样的问题,试图从Instagram 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 => {});
希望有所帮助:)