我正在制作一個簡單的登錄功能,但在異步回應方面遇到了困難。似乎沒有呼叫 html 檔案中的函式。為什么?它會將我發送到另一個頁面,其中僅包含: {"status":"Not Found","data":"Incorrect Username and/or Password!"} 它還應該打開一個對話框
<body class="hero-image">
<div id="container">
<div id="tabs">
<p id="lt" class="tabs">Log in</p>
<p id="rt" class="tabs" onclick="location.href = './register';">Register</p>
<div id="clear"></div>
</div>
<div id="cont">
<div id="loginBox" class="comm">
<h3>Sign in</h3>
<form action="/api/login" method="POST">
<input id="username" type="text" autocomplete="off" name="username" placeholder="Username" required>
<input id="password" type="password" autocomplete="off" name="password" placeholder="Password" required>
<input type="submit" value="Submit Form">
</form>
</div>
</div>
</div>
<script>
const form = document.getElementById('login')
form.addEventListener('submit', login)
async function login(event) {
alert('Success')
event.preventDefault()
const username = document.getElementById('username').value
const password = document.getElementById('password').value
const result = await fetch('/api/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username,
password
})
}).then((res) => res.json())
if (result.status === 'ok') {
// everything went fine
console.log('Got the token: ', result.data)
localStorage.setItem('token', result.data)
alert('Success')
} else {
if (result.status === 'Not Found') {
alert("Incorrect Username and/or Password!");
}
else {
alert("Please enter Username and Password!");
}
}
}
</script>
問題似乎是上面的函式沒有被呼叫。我真的很感謝你的幫助:D
var mysql = require('mysql');
var express = require('express');
var session = require('express-session');
var bodyParser = require('body-parser');
var path = require('path')
const jwt = require('jsonwebtoken')
app.post('/api/login', async (req, res) => {
var dialog = require('dialog');
const { username, password } = req.body;
if (!username) {
return res.json({ status: 'Not Found', data: 'Invalid username/password' });
}
if (username && password) {
connection.query('SELECT * FROM users WHERE username = ? AND password = ?', [username, password], function(error, results, fields) {
if (results.length > 0) {
return res.json({ status: 'ok', data: username });
} else {
return res.json({ status: 'Not Found', data: 'Incorrect Username and/or Password!' });
}
});
}
});
uj5u.com熱心網友回復:
這是一個更正的片段。@Quentin 已經指出缺少“登錄”ID。
const form = document.getElementById('login')
form.addEventListener('submit', login)
async function login(event) {
console.log('logging in ...')
event.preventDefault()
const username = document.getElementById('username').value
const password = document.getElementById('password').value
const url='https://jsonplaceholder.typicode.com/users/'; // '/api/login'
const result = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username,
password
})
}).then((res) => res.json())
if (result.status !== 'ok') {
// everything went fine
console.log('Got the token: ', result)
// localStorage.setItem('token', result.id)
alert('Success')
} else {
if (result.status === 'Not Found') {
alert("Incorrect Username and/or Password!");
} else {
alert("Please enter Username and Password!");
}
}
}
<body class="hero-image">
<div id="container">
<div id="tabs">
<p id="lt" class="tabs">Log in</p>
<p id="rt" class="tabs" onclick="location.href = './register';">Register</p>
<div id="clear"></div>
</div>
<div id="cont">
<div id="loginBox" class="comm">
<h3>Sign in</h3>
<form action="/api/login" method="POST" id="login">
<input id="username" type="text" autocomplete="off" name="username" placeholder="Username" required>
<input id="password" type="password" autocomplete="off" name="password" placeholder="Password" required>
<input type="submit" value="Submit Form">
</form>
</div>
</div>
</div>
</body>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416559.html
標籤:
上一篇:`npxcreate-react-app`說它需要“節點14或更高版本”,但我運行的是17.4.0。我怎樣才能解決這個問題?
