使用fetch时:
fetch(REQUEST_URL, {
method: 'get',
dataType: 'json',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then((response) =>
{
response.json() // << This is the problem
})
.then((responseData) => { // responseData = undefined
console.log(responseData);
});
}).catch(function(err) {
console.log(err);
})
.done();
以下作品有效,你知道为什么吗? :
JSON.parse(response._bodyText)
答案 0 :(得分:35)
抓取有点难以理解。我是新来的,所以不要把我击倒如果火焰在这里,但响应数据是另一个承诺,你需要返回响应数据然后处理该承诺与另一个然后声明,你可以最终记录响应,也是你缺少一些回报你的承诺中的陈述:
var makeRequest = function(){
fetch('https://jsonplaceholder.typicode.com/posts/1', {
method: 'get',
dataType: 'jsonp',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then((response) => {
return response.json() // << This is the problem
})
.then((responseData) => { // responseData = undefined
addTestToPage(responseData.title);
return responseData;
})
.catch(function(err) {
console.log(err);
})
}
function addTestToPage(textToAdd){
var para = document.createElement("p");
var node = document.createTextNode(textToAdd);
para.appendChild(node);
var element = document.getElementsByTagName("body")[0];
element.appendChild(para);
}
makeRequest();
希望有助于查看:https://jsfiddle.net/byz17L4L/
答案 1 :(得分:35)
链接响应应该更像这样,特别是response.json
部分。然后,您应该在Object
中找到console.log
。
.then(response => response.json())
.then(response => {
console.log(response);
答案 2 :(得分:9)
以下是我的案例中最终解决的问题:
fetch('http://localhost:3001/questions', {
method: 'GET',
headers: {
"Accept": "application/json",
'Content-Type': 'application/json'
}
})
.then(response => { return response.json();})
.then(responseData => {console.log(responseData); return responseData;})
.then(data => {this.setState({"questions" : data});})
.catch(err => {
console.log("fetch error" + err);
});
}
答案 3 :(得分:8)
因为你没有在第一个时间内返回response.json()。
答案 4 :(得分:0)
import React, {useEffect} from 'react';
useEffect(() => {
getRecipes();
}, []);
const getRecipes = async () => {
const response = await fetch(
`https://........`
);
const data = await response.json();
console.log(data);
答案 5 :(得分:-3)
fetch(weatherIng + zipCode +apiKey)
.then(response => response.json())
.then(response => {
console.log(response.main);
this.setState({
weather: ((response.main.temp * (9/5))-459.67).toFixed(0),
humidity:((response.main.humidity * (9/5))-459.67).toFixed(0)
})
如果你没有将它自己包含在内,它会认为你正在尝试声明一些东西:
.then(response => {
console.log(response.main);
}) . " around the this.setState