使用fetch API retwrite jquery Ajax调用

时间:2017-11-19 13:41:40

标签: javascript ajax fetch fetch-api

我有以下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
}

2 个答案:

答案 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)
})