Javascript 获取ajax post请求中传递的参数
我正在尝试从一个简单的html页面向一个nodejs express服务器进行post调用,该服务器将值保存到mongo集合中 我正在传递两个post参数,即name和email,但是在服务器上我没有得到传递的值 服务器说: TypeError:无法读取未定义的属性“userName”。可能是什么问题 这是我的html文件Javascript 获取ajax post请求中传递的参数,javascript,ajax,node.js,express,Javascript,Ajax,Node.js,Express,我正在尝试从一个简单的html页面向一个nodejs express服务器进行post调用,该服务器将值保存到mongo集合中 我正在传递两个post参数,即name和email,但是在服务器上我没有得到传递的值 服务器说: TypeError:无法读取未定义的属性“userName”。可能是什么问题 这是我的html文件 <html> <head> <script type="text/javascript" src="../script
<html>
<head>
<script type="text/javascript" src="../scripts/jquery.min.js"></script>
</head>
<body>
<br> User Name :
<input type="text" id="userName" name="userName">
<br>
<br>Email :
<input type="text" id="emailId" name="emailId">
<br>
<br>
<input type="submit" id="addAttrs" value="Add" onclick="addUser()">
</body>
<script type="text/javascript" src="../scripts/client.js"></script>
</html>
var express = require('express');
var app = express();
var fs = require('fs');
var path = require('path');
var bodyParser = require('body-parser');
app.use(express.static('public'));
var MongoClient = require('mongodb').MongoClient;
var routes = require('./routes/index');
app.use('/', routes);
app.use(function(req, res, next) {
req.db = db;
next();
});
var myCollection;
var db;
var urlencodedParser = bodyParser.urlencoded({
extended: false
})
var server = app.listen(8081, function() {
db = MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
if (err)
throw err;
console.log("connected to the mongoDB !");
myCollection = db.collection('user_collection');
});
var host = server.address().address;
var port = server.address().port;
console.log("Example app listening at http://%s:%s", host, port);
})
module.exports = app;
var express = require('express');
var router = express.Router();
var path = require('path');
router.get('/', function(req, res) {
res.sendFile(path.join(__dirname, '../public/views', 'index.html'));
});
router.get('/userlist', function(req, res) {
var db = req.db;
var collection = db.get('usercollection');
collection.find({}, {}, function(e, docs) {
res.render('userlist', {
"userlist": docs
});
});
});
router.post('/adduser', function(req, res) {
var db = req.db;
console.log(req.body);
var userName = req.body.userName;
var userEmail = req.body.userEmail;
var collection = db.get('usercollection');
collection.insert({
"username": userName,
"email": userEmail
}, function(err, doc) {
if (err) {
res.send("There was a problem adding the information to the database.");
} else {
response = {
message: 'user created successfully',
status: 200
};
res.end(JSON.stringify(response));
}
});
});
module.exports = router;
这是我的服务器index.js文件
<html>
<head>
<script type="text/javascript" src="../scripts/jquery.min.js"></script>
</head>
<body>
<br> User Name :
<input type="text" id="userName" name="userName">
<br>
<br>Email :
<input type="text" id="emailId" name="emailId">
<br>
<br>
<input type="submit" id="addAttrs" value="Add" onclick="addUser()">
</body>
<script type="text/javascript" src="../scripts/client.js"></script>
</html>
var express = require('express');
var app = express();
var fs = require('fs');
var path = require('path');
var bodyParser = require('body-parser');
app.use(express.static('public'));
var MongoClient = require('mongodb').MongoClient;
var routes = require('./routes/index');
app.use('/', routes);
app.use(function(req, res, next) {
req.db = db;
next();
});
var myCollection;
var db;
var urlencodedParser = bodyParser.urlencoded({
extended: false
})
var server = app.listen(8081, function() {
db = MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
if (err)
throw err;
console.log("connected to the mongoDB !");
myCollection = db.collection('user_collection');
});
var host = server.address().address;
var port = server.address().port;
console.log("Example app listening at http://%s:%s", host, port);
})
module.exports = app;
var express = require('express');
var router = express.Router();
var path = require('path');
router.get('/', function(req, res) {
res.sendFile(path.join(__dirname, '../public/views', 'index.html'));
});
router.get('/userlist', function(req, res) {
var db = req.db;
var collection = db.get('usercollection');
collection.find({}, {}, function(e, docs) {
res.render('userlist', {
"userlist": docs
});
});
});
router.post('/adduser', function(req, res) {
var db = req.db;
console.log(req.body);
var userName = req.body.userName;
var userEmail = req.body.userEmail;
var collection = db.get('usercollection');
collection.insert({
"username": userName,
"email": userEmail
}, function(err, doc) {
if (err) {
res.send("There was a problem adding the information to the database.");
} else {
response = {
message: 'user created successfully',
status: 200
};
res.end(JSON.stringify(response));
}
});
});
module.exports = router;
这是我在router.js文件中处理请求的地方
<html>
<head>
<script type="text/javascript" src="../scripts/jquery.min.js"></script>
</head>
<body>
<br> User Name :
<input type="text" id="userName" name="userName">
<br>
<br>Email :
<input type="text" id="emailId" name="emailId">
<br>
<br>
<input type="submit" id="addAttrs" value="Add" onclick="addUser()">
</body>
<script type="text/javascript" src="../scripts/client.js"></script>
</html>
var express = require('express');
var app = express();
var fs = require('fs');
var path = require('path');
var bodyParser = require('body-parser');
app.use(express.static('public'));
var MongoClient = require('mongodb').MongoClient;
var routes = require('./routes/index');
app.use('/', routes);
app.use(function(req, res, next) {
req.db = db;
next();
});
var myCollection;
var db;
var urlencodedParser = bodyParser.urlencoded({
extended: false
})
var server = app.listen(8081, function() {
db = MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
if (err)
throw err;
console.log("connected to the mongoDB !");
myCollection = db.collection('user_collection');
});
var host = server.address().address;
var port = server.address().port;
console.log("Example app listening at http://%s:%s", host, port);
})
module.exports = app;
var express = require('express');
var router = express.Router();
var path = require('path');
router.get('/', function(req, res) {
res.sendFile(path.join(__dirname, '../public/views', 'index.html'));
});
router.get('/userlist', function(req, res) {
var db = req.db;
var collection = db.get('usercollection');
collection.find({}, {}, function(e, docs) {
res.render('userlist', {
"userlist": docs
});
});
});
router.post('/adduser', function(req, res) {
var db = req.db;
console.log(req.body);
var userName = req.body.userName;
var userEmail = req.body.userEmail;
var collection = db.get('usercollection');
collection.insert({
"username": userName,
"email": userEmail
}, function(err, doc) {
if (err) {
res.send("There was a problem adding the information to the database.");
} else {
response = {
message: 'user created successfully',
status: 200
};
res.end(JSON.stringify(response));
}
});
});
module.exports = router;
你应该发送一个json而不是字符串 删除
JSON.stringify()
或使其成为JSON.parse(JSON.stringify(obj))
,因为您发送的是字符串(即:typeof req.body是string)
在服务器端。使用app.use(bodyParser.json())代码>这对于解析application/json类型非常重要
现在我想我会为你工作
你应该发送一个json而不是字符串 删除
JSON.stringify()
或使其成为JSON.parse(JSON.stringify(obj))
,因为您发送的是字符串(即:typeof req.body是string)
在服务器端。使用app.use(bodyParser.json())代码>这对于解析application/json类型非常重要
现在我想我会为你工作
console.log(请求主体)
在操作内部。有什么输出?console.log(req.body)打印未定义。是否配置了body解析器?为了更好地度量,还需要在$请求上设置内容类型:contentType:“application/json;charset=utf-8”,
。某些原因导致post正文无法解析为对象。检查req.params
,但您确实希望更正此问题,因此它将进入req.body
。添加contentType后仍然得到相同的响应,我已用整个代码编辑了帖子。我是否必须为此添加单独的主体解析器。console.log(req.body)
。有什么输出?console.log(req.body)打印未定义。是否配置了body解析器?为了更好地度量,还需要在$请求上设置内容类型:contentType:“application/json;charset=utf-8”,
。某些原因导致post正文无法解析为对象。检查req.params
,但您确实希望更正此问题,因此它将进入req.body
。添加contentType后仍然得到相同的响应,我已用整个代码编辑了帖子。我必须为此添加单独的主体解析器吗?谢谢,JSON.parse(JSON.stringify(obj))工作得很有魅力。欢迎……但当您的obj已经是一个JSON时,这是没有意义的!谢谢,JSON.parse(JSON.stringify(obj))工作得很有魅力。欢迎……但当您的obj已经是一个JSON时,这是没有意义的!