来自 API 的响应未定义

时间:2021-04-15 17:25:23

标签: javascript reactjs axios

所以我正在尝试使用令牌制作身份验证系统。这通过发送一个带有令牌的 get 请求来工作,API 应该返回信息。我遇到了一个错误,它是 "serve": { "builder": "_____________", "options": { "browserTarget": "______", "port": 54751 "fallbackPort": 23000 <----------------------------- like this }, ,并且错误指向这一行 TypeError: Cannot read property 'Error' of undefined。所以我猜这意味着 API 的响应没有被放入 if (UserData.Error == "Token not valid") {return false}。 API 工作正常,如果令牌正确,这里是响应:

UserData

这是令牌不正确时的响应

{
    "username": "admin",
    "is_staff": true,
    "email": "admin@gmail.com"
}

这是我的代码:

{
    "Error": "Token not valid"
}

1 个答案:

答案 0 :(得分:1)

由于 ajax 请求在 js 中以异步方式工作,我们可以使调用与 async await 同步。

async function isAuthenticated() {
    const authtoken = localStorage.getItem('AuthToken')
    if (authtoken == null) {
        return false
    } else {
        let UserData;
        UserData = await axios.get(`http://localhost:8000/api/token/?token=${authtoken}`).then(function(request) {
          return request.data
        })
        if (UserData.Error == "Token not valid") {return false}
        else {return UserData}
    }
}

# while executing use await
userData = await isAuthenticated()