ajax提交request.body无法拿到参数
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版本需要使用另外一种方法·