ajax提交request.body无法拿到参数
发布于 8 年前 作者 hucheng91 9709 次浏览 来自 问答

ajax提交的问题困惑我已晚上,各种方法都试了可就死拿不到参数值,用的是express4.x,代码如下

<div class="form-group">
          <label for="exampleInputEmail1">邮箱</label>
          <input type="email" class="form-control" id="exampleInputEmail1" name="email" placeholder="Email">
        </div>
        <div class="form-group">
          <label for="exampleInputPassword1">密码</label>
          <input type="password" class="form-control" id="exampleInputPassword1" name="pwd" placeholder="Password">
        </div>
<script>
  jQuery(document).ready(function() {
    $("#form_submit").bind("click",function(){
      var email = $("#exampleInputEmail1").val();
      var pwd = $("#exampleInputPassword1").val();
        console.log(email);
        $.ajax({
            url:'/loginverificat',
            type:'post',
            contentType:"application/json",
            data: JSON.stringify({email:email,pwd:pwd}),
            success: function(data){
              console.log(data);
            },
            error: function(data,status){
                console.log("error");
            }
        });
    });
  });

后台

var express = require("express");
var app = express();
app.use(express.static(__dirname +"/public"));
app.post("/loginverificat",function(req,res){
    console.log(JSON.stringify(req.body.email));
    //  console.log(JSON.stringify(req.ip));
    console.log(JSON.stringify(req.params));
    console.log(JSON.stringify(req.query));
});
app.get("/login",function(req,res){
    res.sendFile(ablotePath+"login.html");
});
app.listen(8888);
console.log("lissten port 8888")

刚开始接触node.js,希望有这方面的经验朋友帮忙解释下这个问题

6 回复

post是需要bodyparser的,自己检查一下吧

JSON.stringify()是把对象转换为JSON格式,你Post的时候已经是JSON格式了,后台拿到数据应该用JSON.parse(req.body).email来转为对象后访问属性;楼上提到那个模块你也需要引入,用来解析post数据,这样才可以使用req.body

需要中间件(body-parser)来帮助你处理请求头和请求体,把请求参数解析成易用格式,绑定到request.query/request.body/request.params等等~

require(‘body-parser’);要用这个中间件处理http请求,建议服务端打印req

@297854895 本来是想进来看看能不能回答上,结果看到你的回答正好解决了我今天的另一个问题,哈哈

谢谢大家,确实是要加这个

var bodyParser = require("body-parser");
var multer = require('multer');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(multer({ dest: 'tmp/' }));

而且使用这个的时候multer({ dest: ‘tmp/’ })这种方式时,multer模块需要0.x版本 ,1.x版本需要使用另外一种方法·

回到顶部