【发布时间】:2019-11-19 21:15:07
【问题描述】:
问题 我正在处理一个简单的登录页面。在我的视图模型脚本中,我调用另一个脚本来处理对我的 API 的调用。
简而言之,我没有取回我想要的预期数据,它只是一个令牌字符串(表示登录成功)。
这是我正在使用的模拟 Json
[
{
"id":1,
"firstName":"John",
"lastName":"Smith",
"email":"john@gmail.com",
"token" : "65456j4h56j4h6gjk4g6k7g6k5g7jh567"
}
]
我的视图模型脚本
import {user} from "../shared/user-service.js";
import {token} from "../shared/token-service.js";
// Login View Model
var LoginViewModel = function () {
self = this;
this.token = ko.observable();
this.email = ko.observable("john@gmail.com");
this.password = ko.observable("12345");
self.submit = function () {
var oUser = {
email: self.email(),
password: self.password()
};
// I am not getting back desired results here
var loginResponse = user.login(oUser);
alert(loginResponse.token);
}
}; // End View Model
ko.applyBindings(new LoginViewModel());
最后,这是我的用户服务文件:
let user = {
getUserSession: function () {
var user = JSON.parse(sessionStorage.getItem('user'));
console.log(`Getting User from Session: value = ${user} `);
return user;
},
setUserSession: function (objUser) {
var user = JSON.stringify(objUser);
sessionStorage.setItem("user", user);
console.log(`Setting User in Session: value = ${user} `);
},
login: function (objUser) {
return fetch('../api/user/login.json', {
method: "GET",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
})
.then((response) => response.json())
.then((responseData) => {
console.log(responseData);
return responseData;
})
.catch(error => console.warn(error));
}
};
/* Helper Functions */
function handleErrors(response) {
if (!response.ok) {
console.log(JSON.stringify(response));
throw Error(response.statusText);
}
return response;
}
export {
user
};
这是来自我的 login-view-model.js 中的警报值...
基本上,我只想登录用户。如果有效,则获取 API 返回的令牌,并将其保存到会话。如果没有返回令牌,只需提醒即可。
我不知道为什么这对我来说如此困难。我真的很感激这方面的一些指导。
哦,当然,你看我只是在用这个模拟数据进行测试。一旦我得到这个功能,我会将它转换为一个 POST 和一个真实的 URL。
感谢您阅读本文。
约翰
【问题讨论】:
标签: javascript json knockout.js ecma