Как я могу вызвать функцию из nodejs в html?

Спасибо всем, я решил эту проблему несколько дней назад, но я отредактировал, чтобы удалить некоторую конкретную информацию в вопросе (коде). Так что это не дубликат, просто исправленный для защиты. Я использую 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"

Эта функция validate должна быть в вашем внешнем коде Javascript, а не в серверной части. Тот факт, что вы можете использовать Javascript на стороне сервера, не означает, что вы можете волшебным образом выполнять клиентские операции на стороне сервера. (И я не думаю, что объект document существует даже вне браузера. window определенно не существует.)

Robin Zigmond 01.12.2018 15:55

Вам необходимо использовать fetch() (AJAX) для вызова серверного кода от клиента. А пока я бы вызвал функцию проверки из вашего маршрута login.post().

Chris G 01.12.2018 15:59

@RobinZigmond Я думаю, что вы правы, но раньше я пытался написать функцию validate () между тегами скрипта в html. до сих пор не работает.

workingonit 01.12.2018 16:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
43
1

Ответы 1

Вы выполняете внешнюю проверку, поэтому ваша функция проверки должна быть перед интерфейсом в теге скрипта. вызывать функцию проверки, когда пользователь нажимает кнопки отправки.

Другой способ - выполнить валидацию в бэкэнде с помощью промежуточных промежуточных продуктов. это внутренняя проверка. проверьте экспресс-валидатор

спасибо, но я уже сделал первый.

workingonit 01.12.2018 16:20

Итак, вы определяете validate () в теге скрипта во внешнем интерфейсе и все еще не работаете? есть ли ошибка в консоли браузера?

defectivepixel 01.12.2018 16:22

ошибка консоли: Uncaught ReferenceError: проверка не определена в HTMLInputElement.onclick

workingonit 01.12.2018 16:30

покажите мне свой тег скрипта, пожалуйста.

defectivepixel 01.12.2018 16:39

<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>

workingonit 01.12.2018 16:41

нет необходимости в этом атрибуте src и поместите тег скрипта в нижнюю часть тела.

defectivepixel 01.12.2018 17:29

Другие вопросы по теме