我有一个表单来添加newCompany,我使用AJAX发送数据,如下所示:
问题是,当我添加新公司时,插入两次数据,第一个是没有图像名称的12个字段!!第二个是空物!像这样:
我不知道,我会失去理智! 求救!
答案 0 :(得分:1)
在保存时调用res.redirect('/company/create')
,将HTTP302发送到客户端。然后客户端第二次触发相同的路由。在$.ajax()
请求完成后,请尝试在客户端执行重定向。
答案 1 :(得分:0)
这是因为您将回复重定向到公司/创建
router.post('/company/create', function(req, res, next){
var newCompany = new Company({
name: req.body.name,
address: req.body.address,
city: req.body.city,
country: req.body.country,
.
.
.
.
});
Company.save(newCompany, function(err, response){
if(err){
console.log(err);
}
res.location('/home');
res.redirect('/home');
});
});
如果它不起作用,让我们看看你的模型。问题可能在那里
答案 2 :(得分:0)
我遇到了和你一样的问题,我在Udemy.com Q& A董事会发表了关于我们所关注的课程的第37讲的链接后发现了这篇文章。
此问题的解决方案处理'提交'事件NOT按钮的单击事件,看起来代码执行以响应我们希望处理click事件,然后它执行自然行为(并再次执行路由处理程序)
这是完整的validate.js文件,只需替换'点击'提交'提交'这应该可以解决问题:
$(document).ready(function(){
$('#register').on('submit',function(e){
var name = $.trim($('#name').val());
var address = $.trim($('#address').val());
var city = $.trim($('#city').val());
var country = $.trim($('#country').val());
var sector = $.trim($('#sector').val());
var website = $.trim($('#website').val());
var img = $.trim($('#upload-input').val());
var isValid = true;
if(name == ''){
isValid = false;
$('#errorMsg1').html('<div class="alert alert-danger">Company name can\'t be empty</div>');
}
if(address == ''){
isValid = false;
$('#errorMsg2').html('<div class="alert alert-danger">address can\'t be empty</div>');
}
if(city == ''){
isValid = false;
$('#errorMsg3').html('<div class="alert alert-danger">City can\t be empty</div>');
}
if(country == ''){
isValid = false;
$('#errorMsg4').html('<div class="alert alert-danger">Country can\'t be empty</div>');
}
if(sector == ''){
isValid = false;
$('#errorMsg5').html('<div class="alert alert-danger">Sector can\'t be empty</div>');
}
if(country == ''){
isValid = false;
$('#errorMsg6').html('<div class="alert alert-danger">Website can\'t be empty</div>');
}
if(isValid == false){
return false;
}else{
var newCompany = {
name: name,
address: address,
city: city,
country: country,
sector: sector,
website: website,
img: img
};
$.ajax({
url: '/company/create',
type: 'POST',
data: newCompany,
success: function(){
$('#name').val('');
$('#address').val('');
$('#city').val('');
$('#country').val('');
$('#sector').val('');
$('#website').val('');
$('#upload-input').val('');
}
});
}
})
});