【发布时间】:2017-05-26 16:34:25
【问题描述】:
我正在开发一个 Node.js-Express.js-Mongoose 应用程序。 我想以 html 表单(EJS 文件)接受用户详细信息(姓名和年龄),保存到数据库中(使用猫鼬)在网页上显示添加的用户详细信息。 我正在使用 AJAX。使用的文件是:
userview.ejs(包含表单)--> frontend.js(使用 jquery)--> users.js(路由器file- 调用 userController 中定义的 add() 函数)--> userController.js(附在下面)--> userService.js(执行数据库操作)。
实际发生的情况是创建了一个新用户,但没有显示名称。
FRONTEND.js
console.log('Frontend Reached');
$(document).ready(function() {
var url = '/users/delete_user';
var user_url = '/users/add_user';
function load_users(e) {
$.ajax({
url: 'userview.ejs',
dataType: 'text',
type: 'post',
ContentType: 'html',
data: $('#user_form').serialize(),
success: function(data, textStatus, jQxhr) {
console.log(data);
$('#list').html(data);
//$('#user_form').submit( load_users );
},
error: function(jqXhr, textStatus, errorThrown) {
console.log(errorThrown);
}
});
e.preventDefault();
}
//添加用户
$(document).on('click', '.btn btn-success', function(e) {
e.preventDefault();
var user_name = $("#nameinput").val();
var user_age = $("#ageinput").val();
console.log(user_name);
console.log(user_age);
$.ajax({
url: 'userview.ejs',
dataType: 'text',
type: 'post',
ContentType: 'html',
data: {
'user_name': user_name,
'user_age': user_age
},
success: function(data, textStatus, jQxhr) {
console.log(data);
load_users();
},
error: function(jqXhr, textStatus, errorThrown) {
console.log(errorThrown);
}
});
e.preventDefault();
}); //onclick
}); //document ready
这是 userController.js 此文件中的控制台日志显示该记录未定义。
var User = require('../models/usermodel.js');
var userService = require('../services/userService');
var userController = {
add: function(request, response) {
var user_name = request.body.user_name;
var user_age = request.body.user_age;
console.log(user_name); //SHOWS UNdEFINED
var newUser = new User({
name: user_name,
age: user_age
});
console.log(newUser);
//var userName = request.body.user_name;
//var userAge = request.body.user_age;
userService.add(newUser, function(err, added) {
if (err != null) {
response.send(500);
} else {
response.send(200);
}
});
},
delete: function(request, response) {
var userId = request.body.user_id;
userService.delete(userId, function(err, deleted) {
if (err != null) {
response.send(500);
} else {
response.send(200);
}
});
}
};
module.exports = userController;
【问题讨论】:
-
什么错误?问题是什么?应该发生什么?实际发生了什么?这就是提出问题的原因,而您的问题则缺乏。请参阅mcve 以改进您的问题。
-
您是否尝试将数据直接从前端添加到 mongodb?我找不到原因,先生!您需要拥有开放(非安全)数据库或在前端存储凭据(这意味着几乎开放的数据库,因为您无法在前端隐藏任何内容)。这是不行的。
-
@NeilLunn 我已经进行了必要的更改。如果您还需要什么,请告诉我。
-
可能问题出在您设置的
dataType和ContentType上。删除它们以保留默认值或更改为contentType: "application/json; charset=utf-8"和dataType: "json"
标签: javascript jquery node.js mongodb mongoose