728x90

jQuery Ajax를 사용하여 서버와 비동기 통신을 하는 방법이다.

Front-End 단에서 사용하는 loginForm.html 이다. ( 테스트용으로 사용하던 loginForm.php 파일을 약간 수정)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="form.css"  />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $('#login-submit').click(function(e){
        e.preventDefault();
        var userID = $("input[name='userID']");
        if( userID.val() =='') {
            alert("아이디를 입력하세요");
            userID.focus();
            return false;
        }
 
        var password = $("input[name='password']");
        if(password.val() =='') {
            alert("비밀번호를 입력하세요!");
            password.focus();
            return false;
        }
 
        $("form").submit();
    });
});
</script>
</head>
<body>
<div class="container">
<h2>로그인 Form 예제</h2>
<form method="post" action="/login">
    <table>
        <tr>
            <td style="font-size:14px">로그인 ID</td>
            <td><input type="text" name="userID" value=""></td>
        </tr>
        <tr>
            <td style="font-size:14px">패스워드</td>
            <td><input type="password" name="password"></td>
        </tr>
        <tr>
            <td colspan='2' align=left>
                <input type="button" id="login-submit" value="로그인">
            </td>
        </tr>
        <tr>
            <td colspan='2'><p>회원이 아니신가요? <a href="joinForm.html">회원가입 하기</a></p></td>
        </tr>
    </table>
</fom>
</div>
</body>
</html>
 

jQuery 를 CDN 경로로 설정하여 사용하는 것이 편하다.

node_modules/jquery 디렉토리에 설치하여 사용하고자 한다면 ....

npm install jquery --save 를 실행하여 jQuery 라이브러리를 설치한다.

app.js 파일에서 app.use('/node_modules', express.static(path.join(__dirname + '/node_modules'))) 를 추가한다.

loginForm.html 파일에서 <script src="node_modules/jquery/dist/jquery.min.js"></script> 로 수정한다.

 

 

app.js

- public 디렉토리를 static 으로 지정한다.

- express 4.16.0 이상부터 body-parser 를 별도 설치할 필요가 없다.

- form action='/login' 부분이 Back-End app.js 파일 내 app.post('/login', ... ) 에서 처리한다.

- res.render 에서 views 디렉토리 index.ejs 로 값을 넘겨 화면에 출력한다.

var express = require('express');
var path = require('path');
var app = express();
 
 
app.listen(3000function() {
    console.log("start, express server on port 3000");
});
 
app.use(express.static(path.join(__dirname, 'public')));
 
app.set('views', path.join(__dirname, 'views'));
app.set('view engine''ejs');
 
app.use(express.json()); //json 형태로 parsing
app.use(express.urlencoded({ extended: false }));
 
app.get('/'function(req,res) {
    res.sendFile(__dirname + "/publc/index.html");
});
 
app.post('/login'function(req, res) {
    // Form POST 전송의 결과 즉 action='/login'
    var post = req.body;
    console.log(post);
    res.render('index.ejs', {'title':post.userID});
});
 
module.exports = app;

여기서 전달할 데이터 userID 를 {'title' : res.body.userID} 

index.ejs 파일에서 변수로 받는 <%= title %> 에 전달한다.

 

좀 더 완벽하게 Ajax 처리하는 것은 다음에 올릴 예정이다.

728x90
블로그 이미지

Link2Me

,