วันอาทิตย์ที่ 27 กันยายน พ.ศ. 2563

การเชื่อมโยง Web html. javascript client กับ NodeJs server

 การส่งค่า ระหว่าง Web Html กับ NodeJs ทั้ง 2 ทาง ทำได้ 2 วิธี คือ เป็น Web Post กับ Javascript

ใน ส่วนของ server จำเป็นต้อง Install Tool เพิ่ม 2 ตัว ได้แก่ express กับ body-parser

สร้าง folder เช่น nodeExpress

คำสั่ง

cd nodeExpress

npm install express

nom install body-parser

File server.js


const express = require('express');

const bodyParser = require('body-parser');

const app = express();

// ให้ แยก body ทำ Urlencode

app.use(bodyParser.urlencoded({ extended: true }));

//ส่ง Index.html ให้แสดงเป็น Root

app.get('/', function(request, response){

  response.sendFile(__dirname+'/index.html');

});


// สำหรับการ Form Post

app.post('/example', (req, res) => {

  console.log(req.body.fname) // ระวังการใช้ Quote จะใช้ กับ Express ต้องเป็นแบบตย

  res.send(`Full name is:${req.body.fname} ${req.body.lname}.`);

  console.log(`${req.body.fname}`);

});


// สำหรับ javascript


app.post('/foo', foo);

function foo(req, res){

  console.log(req.body); // ที่รับมา

 res.send('hello world'); // ส่งกลับ

};


//  port

const port = 8090;


app.listen(port, () => {

  console.log(`Server running on port${port}`);

});


html ต้องส่งมาจาก server จะเรียกจาก File ไมได้ติด Securityของ Browser
สำหรับ หน้า จอ index.html. , 
check me javascript เป็นการเรึยกโดย javascript
Send to Backend เป็นการ Post ของ Form
การ Encode ต้องใช้ เป็น application/x-www-form-urlencoded
data ที่ส่งเป็น name=Big จะเป็น {name:"Big} ใน Server 
และ ต้องการต่อ ใช้ &
ดูค่า ให้ใช้ Chrome และ กด inspect จะเห็น Console

<!DOCTYPE html>
<html>
<body>
<script>
function myFunction(){
var data = "name=Big";// data ที่จะส่งด้วย javascript

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "http://localhost:8090/foo");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(data); // do send data here
}
</script>


<button onclick="myFunction()">Click me Javascript </button>
<form action="http://localhost:8090/example" method="POST">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<button type="submit">Send to backend</button>
</form>
</body>
</html>


ไม่มีความคิดเห็น:

แสดงความคิดเห็น