ajax接收到的json数据是空的
以下是前端请求代码:
registerBtn.onclick = function () {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function (response) {
if(xhr.readyState === 4 && xhr.status === 200){
console.log(response);
}
}
xhr.open('POST','http://localhost:8081/api/user/register');
var userInfor = '{"username":"' + username + '","password":"' + password +'"}';
xhr.send(userInfor);
}
以下是用户注册时服务器端将注册提示信息保存到数据库中,
var express = require('express');
var router = express.Router();
var User = require('../models/User');
router.use(function (req, res, next) {
responseData = {
code: '',
message: ''
};
next();
});
//用户注册
router.post('/user/register', function (req, res, next) {
User.findOne({username: username}).then(function (userInfor) {
if (userInfor) {
responseData.code = 3;
responseData.message = '用户名冲突,请重新输入';
res.json(responseData);
return;
}
})
});
module.exports = router;
为了篇幅小上面只提供关键代码,问题:
1. ajax进行POST请求时,能否直接在xnr.send中发送json数据?难不成只能发送序列化后的字符串?
2. 服务器端接受请求后已经为responseData
这个json对象赋值了,为什么前端通过xhr.onreadystatechange
收到的还是{"code":"","message":""}
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
post的发送格式格式是
aaa=1111&bbb=2222&ccc=3333
这种的,要用函数进行处理且post要设置头的
数据传输格式有问题吧 看你的代码
1 可以,但是你要告诉服务端你提交的是什么数据,也就是Content-Type: 默认一般是“application/x-www-form-urlencoded” 所以你直接提交json服务器不认识
2 我看不明白你想要表达什么意思,res.json 就是把这个对象json化啊,你认为你应该得到什么结果
为啥不直接用jQuery提供的ajax函数,或者用fetch,send的没设置content-type。如果是json的话用JSON.stringify(userInfor)