我有以下jquery&#39的ajax调用:
const sendingData = {...}
$.ajax({
url: "/api/data/getuser",
type: "GET",
data: sendingData ,
dataType: 'json',
ContentType: 'application/json',
success: (data) => {
console.log('SUCCESS')
console.log(data)
this.setState({
isFetching: false,
data: data.user
})
},
error: (err) => {
console.log(err)
this.setState({isFetching: false})
}
})
我想使用fetch
重新编写它。
我试过这个:
fetch("/api/data/getuser", {
method: "GET",
data: data,
dataType: 'json',
ContentType: 'application/json'
}).then((resp) => {
console.log(resp)
}).catch((err) => {
console.log(err)
})
服务器应该给我一个用户和其他东西的对象,但我得到的就是这个对象:
Response {type: "basic", url: "http://localhost:3001/api/data/getuser", redirected: false, status: 200, ok: true, …}
body:ReadableStream
locked:(...)
__proto__:Object
bodyUsed:false
headers:Headers {}
ok:true
redirected:false
status:200
statusText:"OK"
type:"basic"
url:"http://localhost:3001/api/data/getuser"
__proto__:Response
}
答案 0 :(得分:1)
您需要使用resp.json()
将响应正文作为已解析的JSON。
请参阅https://developer.mozilla.org/en-US/docs/Web/API/Body/json
fetch("/api/data/getuser", {
method: "GET",
data: data,
dataType: 'json',
ContentType: 'application/json'
})
.then((resp) => {
return resp.json();
})
.then((user) => {
console.log(user);
})
.catch((err) => {
console.log(err)
})
答案 1 :(得分:0)
你也缺少标题。
fetch("/api/data/getuser", {
data: data,
headers: {
'Content-Type': 'application/json'
}
})
.then((resp) => {
return resp.json();
})
.then((user) => {
console.log(user);
})
.catch((err) => {
console.log(err)
})