Спасибо всем, я решил эту проблему несколько дней назад, но я отредактировал, чтобы удалить некоторую конкретную информацию в вопросе (коде). Так что это не дубликат, просто исправленный для защиты. Я использую nodejs на сервере, html на интерфейсе и базу данных (mysql) для создания веб-страницы. И для этого мне нужна страница входа. Мои коды html и nodejs ниже. Нет ничего плохого, пока не запустится функция validate (). Моя html-страница должна его использовать, но это не так. На стороне html ничего не меняется. В чем моя ошибка?
КОД NODEJS:
var mysql = require('mysql');
var express = require('express');
var http = require('http');
var login = express();
//mysql bağlantısı
var db = mysql.createConnection({
.................});
//connection
db.connect((err) => {
if (err){
throw err;}
else console.info("connected");
});
//veritabanından bilgi çekimi
login.get('/', (req,res) => {
let sql = 'SELECT `user_name`, `pass` FROM `users`';
db.query(sql,(err,result) => {
if (err) throw err;
console.info(result);
res.sendFile(__dirname + "/login.html");
var .... = result[0].......; //set user name
console.info(.);...
var ......= result[0]......; //set user pass
console.info(.....);
});
});
function validate(){
var username = document.getElementById("....").value;
var password = document.getElementById("....").value;
var err=document.getElementById("error").innerHTML;
//giriş alanları boş kalırsa
if (username= = ""){
alert("Bu gerekli bir alandır");}
if (password= = ""){
alert("Bu gerekli bir alandır");}
//username şifre eşleşmesi
if ( ....== "....." && .....== "...."){
document.getElementById("error").innerHTML = "Log in sucessfull";
window.location = "login.html";
return false;
}
}
HTML КОД
form id = "form_id" action= "/" method = "post" name = "myform"
input type = "text" id = "...." placeholder = "......" required
input type = "....." id = "....." placeholder = "Password" required
input type = "button" id = "submit" value = "LOGIN" onclick = "validate()"
script src = "path"
Вам необходимо использовать fetch() (AJAX) для вызова серверного кода от клиента. А пока я бы вызвал функцию проверки из вашего маршрута login.post().
@RobinZigmond Я думаю, что вы правы, но раньше я пытался написать функцию validate () между тегами скрипта в html. до сих пор не работает.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы выполняете внешнюю проверку, поэтому ваша функция проверки должна быть перед интерфейсом в теге скрипта. вызывать функцию проверки, когда пользователь нажимает кнопки отправки.
Другой способ - выполнить валидацию в бэкэнде с помощью промежуточных промежуточных продуктов. это внутренняя проверка. проверьте экспресс-валидатор
спасибо, но я уже сделал первый.
Итак, вы определяете validate () в теге скрипта во внешнем интерфейсе и все еще не работаете? есть ли ошибка в консоли браузера?
ошибка консоли: Uncaught ReferenceError: проверка не определена в HTMLInputElement.onclick
покажите мне свой тег скрипта, пожалуйста.
<script src = "C: \ Users \ merve \ Desktop \ prj \ server \ login.js"> function validate () {var username = document.getElementById ("username"). value; var password = document.getElementById ("пароль"). value; var err = document.getElementById («ошибка»). innerHTML; if (username == "") {alert ("Bu gerekli bir alandır");} if (password == "") {alert ("Bu gerekli bir alandır");} // имя пользователя şifre eşleşmesi if (username == "имя_пользователя" && пароль == "пройти") {document.getElementById ("error"). innerHTML = "Войти успешно"; return false;}} </script>
нет необходимости в этом атрибуте src и поместите тег скрипта в нижнюю часть тела.
Эта функция
validateдолжна быть в вашем внешнем коде Javascript, а не в серверной части. Тот факт, что вы можете использовать Javascript на стороне сервера, не означает, что вы можете волшебным образом выполнять клиентские операции на стороне сервера. (И я не думаю, что объектdocumentсуществует даже вне браузера.windowопределенно не существует.)