我在http://localhost:1111/user/create
中发送帖子数据时遇到问题。 我正在使用Expressjs框架和Redis作为我的数据库。主要问题是它在我的客户端中没有获得文本框的值,并且在发送帖子数据后,Redis 中字段的所有值都是未定义的。我不知道这里出了什么问题,但这是我的代码:
app.post
服务器.js
app.post('/user/create', function(req, res) {
var user = req.body.user;
var pass = req.body.pass;
var name = req.body.name;
var email = req.body.email;
return client.hmset('username:' + user, 'password', pass, 'name', name, 'email', email,
function(err, data) {
if (!err) {
return res.send(data);
return console.log(data);
} else {
return console.log(err);
}
});
});
以下是有关如何发送帖子数据的 jquery:
<script type="text/javascript">
$("#createbutton").submit(function(event) {
event.preventDefault();
var data = {};
data.name = $('#nameinput').val();
data.email = $('#emailinput').val();
data.username = $('#usernameinput').val();
data.password = $('#passwordinput').val();
JSON.stringify(data);
console.log(data);
$.ajax({
type: 'POST',
url: 'http://localhost:1111/user/create',
data: {data},
dataType: 'application/json',
success: function(data) {
console.log('success');
console.log(data);
}
});
});
</script>
我已经检查了客户端和服务器,但无法弄清楚错误是什么。提前感谢伙计们。
您的数据变量是错误的,请将您的 js 代码更改为下面并尝试一次:
<script type="text/javascript">
$("#createbutton").submit(function(event) {
event.preventDefault();
var data = {};
data.name = $('#nameinput').val();
data.email = $('#emailinput').val();
data.user = $('#usernameinput').val();
data.pass = $('#passwordinput').val();
$.ajax({
type: 'POST',
url: 'http://localhost:1111/user/create',
data: data,
dataType: 'application/json',
success: function(data) {
console.log('success');
console.log(data);
}
});
});
</script>
您需要使用 bodyParser 中间件来访问发布变量。此中间件获取原始发布数据,并将值分配给 req.body 对象。检查 http://expressjs.com/api.html#bodyParser
app.use(express.bodyParser());
expressjs
但你可以尝试从这里改变你的dataType
:
dataType: 'application/json'
自:
dataType: 'json'