express 前后端post方法传值问题

###以x-www-form-urlencoded方式传值。 前端: 1,在表单提交的时候放上监听,阻止表单的默认事件 2,将表单内容序列化 3,利用ajax提交序列化后的表单,注意在头部请求中设置编码格式

前端表单代码:

<form id="form1" >
    <input type="text" name="apple" id="apple">
    <input type="text" name="apple2" id="apple2">
    <button type="submit">submit</button>
</form>

前端js代码

    window.onload = function () {
        var form1 = document.getElementById("form1");
        form1.addEventListener("submit",function (event) {  //两个参数:事件名称,回调函数。
            event.preventDefault();  //阻止表单的默认事件
            sendMessage();
        });
        function sendMessage() {
            var xhr = new XMLHttpRequest();  //新建XMLHttpRequest对象
            xhr.onreadystatechange = function () {
                if(xhr.readyState === 4){
                    if((xhr.status>=200&&xhr.status<300)||xhr===304){
                        alert(xhr.responseText);
                    }
                    else {
                        alert("error");
                    }
                }
            };
            xhr.open("post","testPost",true);//接受三个参数:提交方式,后台路由,是否异步
            xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  //用x-www-form-urlencoded方式传值时需要发送头部请求.
            xhr.send(serialize(form1));
        }
    };
    function serialize(form) {  //将表单内容序列化
        var parts = [],
            field = null,
            i,
            len;
        for(i=0,len=form.elements.length;i<len;i++){//遍历表单元素,将键,值分别编码,再用&连接。
            field = form.elements[i];
            if(field.name.length){
                parts.push(encodeURIComponent(field.name)+"="+encodeURIComponent(field.value));
            }
        }
        return parts.join("&");
    }

###以x-www-form-urlencoded方式传值。

前端js代码:

    window.onload = function () {
        var form1 = document.getElementById("form1");
        form1.addEventListener("submit",function (event) {
            event.preventDefault();
            sendMessage();
        });
        function sendMessage() {
           var xhr = new XMLHttpRequest();
           xhr.onreadystatechange = function () {
               if(xhr.readyState === 4){
                   if((xhr.status>=200&&xhr.status<300)||xhr===304){
                       alert(xhr.responseText);
                   }
                   else {
                       alert("error");
                   }
               }
           };
           xhr.open("post","testPost",true);
           var formData = new FormData(form1);//不需要头部请求,但是要新建FormData对象
           formData.append("apple3","apple3");//向formData中新加入一条键值对.
           xhr.send(formData);
        }
    }

后台代码

'use strict';
const express =require('express');
const orm=require('orm');
const app = express();
var bodyParser = require('body-parser'); //注意:用urlencoded方法传值时要引用body-parser包
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());  //分别支持urlencoded与json
// var multer = require('multer'); //用formdata传值时要引用multer包。
// var upload = multer();
app.use(express.static('public'));

app.get('/',function (req,res) {
    res.sendFile(__dirname+"/public/html/test.html") //__dirname表示项目根目录
});

app.post('/testPost',function (req,res) {  //formData传值这样写'/testPost',upload.single(),function
    var parts = new Object();
    parts.apple = req.body.apple;//接受键名为apple的值
    parts.apple2 = req.body.apple2;
    var sendMessage = JSON.stringify(parts);
    res.send(sendMessage);
});

app.listen(3000,function () {
    console.log("This");
});

转载于:https://my.oschina.net/u/3400107/blog/1506497

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值