Node.js表单处理

post.js

const http = require('http')

const path = require('path')

const fs = require('fs')

const querystring  = require('querystring')

const myserver = http.createServer()

myserver.listen(3000, () => {

    console.log('服务器启动成功!')

})

let filename

let content

let postData

let un

let pwd

myserver.on('request', (req,res) => {

    content = ''

    // 由于post请求的地址中不包含表单数据,因此可以直接用

    // req.url获取浏览器发送给服务器的请求地址

    if(req.url === '/') {

        filename = path.join(__dirname, 'form_post.html')

        fs.readFile(filename, 'utf-8', (err,data) => {

            if(err) {

                return console.log('网页文件读取失败!')

            }

            res.end(data)

        })

    }

    // 如果用户点击了表单中的提交按钮

    else if((req.url === '/login') && (req.method === 'POST')) {

        // 核心代码,获取浏览器通过POST方式提交到这台服务器上的表单数据

        // 类似于流式文件读操作,把req请求对象看做可读流

        req.on('data',(chunk) => {

            content = content + chunk

        })

        

        // 当表单数据全部被content保存后,会自动触发end事件

        req.on('end',() => {

            // console.log('用户提交的表单数据是:' + content)

            // 将content的值(字符串)转化为对象

            postData = querystring.parse(content)

            // console.log(postData)

            // 从表单数据中获取用户名和密码

            un = postData.username

            pwd = postData.pwd

            res.setHeader('Content-Type','text/html;charset=utf-8')

            if((un==='admin') && (pwd==='123456')) {

                res.end('登录成功!')

            }

            else {  

                res.end('<script>alert("用户登录失败");window.location.href="/"</script>')

            }

        })

    }

})

    

get.js

const http = require('http')

const path = require('path')

const fs = require('fs')

const querystring  = require('querystring')

const myserver = http.createServer()

myserver.listen(3000, () => {

    console.log('服务器启动成功!')

})

let filename

let content

let postData

let un

let pwd

myserver.on('request', (req,res) => {

    content = ''

    // 由于post请求的地址中不包含表单数据,因此可以直接用

    // req.url获取浏览器发送给服务器的请求地址

    if(req.url === '/') {

        filename = path.join(__dirname, 'form_post.html')

        fs.readFile(filename, 'utf-8', (err,data) => {

            if(err) {

                return console.log('网页文件读取失败!')

            }

            res.end(data)

        })

    }

    // 如果用户点击了表单中的提交按钮

    else if((req.url === '/login') && (req.method === 'POST')) {

        // 核心代码,获取浏览器通过POST方式提交到这台服务器上的表单数据

        // 类似于流式文件读操作,把req请求对象看做可读流

        req.on('data',(chunk) => {

            content = content + chunk

        })

        

        // 当表单数据全部被content保存后,会自动触发end事件

        req.on('end',() => {

            // console.log('用户提交的表单数据是:' + content)

            // 将content的值(字符串)转化为对象

            postData = querystring.parse(content)

            // console.log(postData)

            // 从表单数据中获取用户名和密码

            un = postData.username

            pwd = postData.pwd

            res.setHeader('Content-Type','text/html;charset=utf-8')

            if((un==='admin') && (pwd==='123456')) {

                res.end('登录成功!')

            }

            else {  

                res.end('<script>alert("用户登录失败");window.location.href="/"</script>')

            }

        })

    }

})

    

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值