我有一个react / redux应用程序,我正在尝试向服务器发送一个简单的GET请求:
fetch('http://example.com/api/node', {
mode: "no-cors",
method: "GET",
headers: {
"Accept": "application/json"
}
}).then((response) => {
console.log(response.body); // null
return dispatch({
type: "GET_CALL",
response: response
});
})
.catch(error => { console.log('request failed', error); });
问题是响应主体在.then()
函数中为空,我不确定为什么。我在网上检查了示例,看起来我的代码应该可以正常工作,因此我在这里显然缺少了一些东西。关键是,如果我在Chrome的开发工具中选中了“网络”标签,则发出请求,并且收到了我要查找的数据。
有人能照亮这个吗?
编辑:
我尝试转换响应。
使用.text()
:
fetch('http://example.com/api/node', {
mode: "no-cors",
method: "GET",
headers: {
"Accept": "application/json"
}
})
.then(response => response.text())
.then((response) => {
console.log(response); // returns empty string
return dispatch({
type: "GET_CALL",
response: response
});
})
.catch(error => { console.log('request failed', error); });
并带有.json()
:
fetch('http://example.com/api/node', {
mode: "no-cors",
method: "GET",
headers: {
"Accept": "application/json"
}
})
.then(response => response.json())
.then((response) => {
console.log(response.body);
return dispatch({
type: "GET_CALL",
response: response.body
});
})
.catch(error => { console.log('request failed', error); }); // Syntax error: unexpected end of input
在chrome开发工具中查看:
fetch
上班,所以我开始使用redux-api-middleware。当您发出请求时,您必须以类似于此处建议的方式将响应转换为json: