我有一个 response/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 开发工具: