1. 程式人生 > >form表單的前後端互動

form表單的前後端互動

建立資料夾。資料夾的命名中不能有漢字,否則會影響程式的執行。

右鍵工程資料夾,在終端開啟,輸入:npm init 一路回車,此時工程資料夾中會出現一個名為:package.json的檔案。

右鍵工程資料夾,新建一個名為:public的資料夾,在public資料夾的目錄下,建立一個名為index.html檔案,然後在工程資料夾下建立一個名為:index.js的檔案,至此,所有檔案建立完畢。

右鍵工程資料夾,在終端開啟,輸入命令:npm install express 下載依賴項,一會兒會用到,然後在終端中輸入命令:npm install multer,一會也會用到,這是個依賴項。至此,所有的檔案就已經全部建立完成,接下來就是程式碼實現功能的時刻了。

這個時候,工程檔案的列表所有檔案目錄如下圖所示:

在index.html資料夾中,建立一個按鈕:

程式碼如下:

<button onclick="form1()">xhr之form請求</button>

瀏覽器的顯示如下圖:

先來寫以form形式傳送的資料,程式碼如下:

<script>

function form1() {

var xhr = new XMLHttpRequest()

// 初始化一個form物件

var form = new FormData()

form.append('name', '張三')

form.append('age', '21')

form.append('fond', '玩耍')

// 建立post介面,

xhr.open('post', '/test')

// 傳送資料

xhr.send(form)

}

</script>

程式碼到此為止,已經以form的表單形式,並且以post的方法傳送給後端了。

接下來就是我們建立後端了。

// 固定寫法

var express = require('express')

var bodyParser = require('body-parser')

// 如果使用的是FormData這種資料提交方式的話

// 那麼需要multer裡面的array()方法進行資料剝離

var multer = require('multer')

var web = express()

var form = multer()

web.use(express.static('public'))

web.use(bodyParser.urlencoded({extended:false}))

// req是前端給後端傳送的資料時使用

// res是後端給前端傳送資料時使用

web.post('/test',form.array(),function(req,res){

name = req.body.name

age = req.body.age

fond = req.body.fond

//給前端傳送資料過去。

res.send('姓名是'+name+',年齡是'+age+',愛好是'+fond)

})

// 建立本地伺服器

web.listen('8080',function(){

console.log('伺服器啟動')

})

在上面的後端程式碼中,我們已經在後端接收了前端傳送過來的資料,並且在post方法中進行了處理:

web.post('/test',form.array(),function(req,res){

name = req.body.name

age = req.body.age

fond = req.body.fond

//給前端傳送資料過去。

res.send('姓名是'+name+',年齡是'+age+',愛好是'+fond)

})

通過res.send又將資料傳送給了前端,

這個時候,我們再進入前端的index.html檔案中,對後端傳送過來的資料進行接收,並且輸出出來,就完成了本次專案的所有目標:

     以form表單的格式進行前後端資料的互動傳送。

前端接收後端處理過的資料的程式碼如下:

// 在xhr的準備狀態發生改變的時候,呼叫該方法

xhr.onreadystatechange = function()

{

    if(xhr.readyState == 4)

    {

         console.log(xhr.responseText)

    }

}

if裡面的判斷語句是:當資料傳輸完成之後,具體解釋,在上一篇部落格中已經介紹的很詳細。

接下來,右鍵工程專案,在終端中開啟,然後輸入命令:node index 啟動伺服器。

這個“8080”是我們剛才以程式碼的形式建立的自己的本機伺服器。

// 建立本地伺服器

web.listen('8080',function(){

console.log('伺服器啟動')

})

然後我們可以看到瀏覽器的最終輸出結果:

至此,我們已經實現了form表單格式的前後端互相傳送資料,是不是沒有想的那麼難?

下附index.html檔案所有程式碼,也就是前端的程式碼。

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>form請求</title>

</head>

<body>

<button onclick="form1()">xhr之form請求</button>

<script>

function form1() {

var xhr = new XMLHttpRequest()

// 初始化一個form物件

var form = new FormData()

form.append('name', '張三')

form.append('age', '21')

form.append('fond', '玩耍')

// 建立post介面,

xhr.open('post', '/test')

// 傳送資料

xhr.send(form)

xhr.onreadystatechange = function () {

if (xhr.readyState == 4) {

console.log(xhr.responseText)

}

}

}

</script>

</body>

</html>