我正在尝试在自己的网站上创建一个到另一个域(我没有访问权限)的登录门户。
只需将表单凭据发布到其他域登录页面,显然就可以了。
<form method="post" action="someOtherDomain.com/login>
<input id="formUsername" type="text" required name="Username" placeholder="username">
<input id="formPassword" type="text" required name="Password" placeholder="password">
<button type="submit">Log in</button>
</form>
除了现在,我希望我的网站让用户知道他们的用户名/密码在我的网站上是否正确,因此请在实际发布之前。
我可以访问另一个域上的API进行登录。
因此,要检查登录是否成功,我是从这套普通的javascript开始的。
function checkLogin(){
var data = {username: document.getElementById("formUsername").value, password: document.getElementById("formPassword").value;
fetch(url, {
method:
body: JSON.stringify(data),
headers:{
'Content-Type': 'application/json'
}
}).then(res => res.json())
.then(res => console.log('Success:', JSON.stringify(res)))
.catch(error => console.error('Error:', error));
}
我想我要重写一下,添加一个if语句以确保此函数正确返回true或false,然后将其添加到表单上的unsubmit函数中。
不幸的是,这是我偶然发现Java异步编码的地方,在获取和处理数据之后,我似乎无法返回任何内容。
我遇到了使用回调函数的情况,希望我可以按自己想要的顺序运行代码,但运气不好。
这是我目前拥有的:
var url = 'someOtherDomain.com/api/login';
var resLength = 0;
function startCheck(){
resLength = 0;
return checkLogin(function() {
if(resLength > 65){
return true;
}
return false;
});
}
function checkLogin(_callback){
resLength = 0;
var data = {username: document.getElementById("formUsername").value, password: document.getElementById("formPassword").value};
fetch(url, {
method:
body: JSON.stringify(data),
headers:{
'Content-Type': 'application/json'
}
}).then(res => res.json())
.then(res => resLength = JSON.stringify(res).length)
.then(res => _callback())
.catch(error => console.error('Error:', error));
}
是的,目前我只是在检查响应的长度,以确保登录成功。可以选择其他方法,但这应该可以用于测试。
除了我试图将IF检查放在另一个.then()语句中外,但这失败了,因为我无法从诺言中返回任何内容,因为它将结果赋予下一个诺言而不是结束那里的功能。
我尝试了其他一些方法,但没有任何效果。大多数帖子似乎仍然使用旧的XMLrequest,并没有真正帮助我。
此后,我需要在更“复杂”的注册表格上更频繁地执行此操作,因此如果有人可以帮助我弄清楚如果登录不成功,如何将false返回到按钮,如果登录成功,则返回true,我将不胜感激。