是JavaScript的新手,我想获取 promiseValue 中的值,该值是在 POST 之后生成的。正在连接的API带来了一个json
对象,如下所示:
{
"message": "User logged in successfully",
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MzE4NTA2ODcsImlhdCI6MTUzMTg0ODg4NywidXNlcm5hbWUiOiJ5b3VxQGdtYWlsLmNvbSJ9.oTwcHkW64RS7ooz5_dzrmlvflI4Eg2Y39hGM0D-wZkY"
}
但是在谷歌浏览器中,它作为 PromiseValue 接受,因此我的目标是从中获取或打印 message 和 token 值 promiseValue 。
下面是显示我得到的 promiseValue 的图片:
下面是到目前为止的代码:
fetch('https://xxxxxx.xxxxxxxx',
{
method: 'POST',
headers: {
'Accept': 'application/json,text/plain,*/*',
'Content-type': 'application/json'
},
body: JSON.stringify({
username: username,
password: password
})
}).then((res) =>{
if(res.status=='401'){
console.log(res.status)
console.log(res.json())
alert("Sorry please, invalid username or password.");
}
else if (res.status='200')
{
console.log(res.status)
console.log(res.json())
}
})
.then((data) => {
console.log(" my data : "+data)
})
答案 0 :(得分:2)
res.json()
返回一个承诺。您需要从第一个then
处理程序返回它,以便在第二个then
处理程序中使用它:
fetch(...)
.then(res => {
if (res.status == '401') {
...
} else if (res.status = '200') {
...
}
return res.json(); // <-- Add this return call
})
.then(res => {
console.log(" my data : " + res);
console.log(res.token, res.message); // <-- Access the response keys here
});
答案 1 :(得分:0)
fetch(...)
.then(res => {
if (res.status == '401') {
throw 'Some error message'; // <-- Add this throw exeption
...
} else if (res.status = '200') {
...
}
return res.json(); // <-- Add this return call
})
.then(res => {
console.log(" my data : " + res);
console.log(res.token, res.message); // <-- Access the response keys here
})
.catch(e => console.error(e)) // <-- Catch your errors here