我有这个功能" saveUser",它从文本框中获取值,并更新用户的信息,然后使用ajax将对象发布到我们的updateuser服务。
function saveUser(event){
event.preventDefault();
var errorCount = 0;
$('#editUser input').each(function(index, val) {
if($(this).val() === '') { errorCount++; }
});
if(errorCount === 0) {
var existingUser = {
'username': $('#editUser fieldset input#inputUserName').val(),
'email': $('#editUser fieldset input#inputUserEmail').val(),
'fullname': $('#editUser fieldset input#inputUserFullname').val(),
'age': $('#editUser fieldset input#inputUserAge').val(),
'location': $('#editUser fieldset input#inputUserLocation').val(),
'gender': $('#editUser fieldset input#inputUserGender').val()
}
$.ajax({
type: 'POST',
data: existingUser,
url: '/users/updateuser/' + data_id,
dataType: 'JSON'
}).done(function( response ) {
if (response.msg === '') {
$('#editUser fieldset input').val('');
populateTable();
disableSaveBtn();
}
else {
alert('Error: ' + response.msg);
}
});
}
else {
alert('Please fill in all fields');
return false;
}
};
这是updateuser服务的代码。
router.put('/updateuser/:id',function(req, res){
var id = req.params.id;
var user = req.body;
delete user._id;
console.log('Updating user: ' + id);
console.log(JSON.stringify(user));
db.collection('userlist', function(err, result) {
collection.update({'_id':new BSON.ObjectID(id)}, user, {safe:true}, function(err, result) {
if (err) {
console.log('Error updating user: ' + err);
res.send({'error':'An error has occurred'});
} else {
console.log('' + result + ' document(s) updated');
res.send(user);
}
});
});
});
当我点击进入用户帐户并进行了编辑,然后将其保存,
我在我的控制台上看到了这个:
POST /users/updateuser/53aca86c005afcbc0faac5be 404 128ms - 1.08kb
我的所有操作都很好,除了这个操作。添加用户工作正常,删除用户也正常工作,基于id的用户检索也不错,除了这个保存操作。
答案 0 :(得分:1)
您正在发帖请求。但是你的路由器正在处理PUT请求
改为使用
router.post('/updateuser/:id',function(req, res){