兩次救了我有一個表單添加newCompany,我發送使用AJAX的數據,像這樣: 數據MongoDB中
問題是,當我添加新公司數據插入兩次,第一個是沒有圖像名稱的12個字段!第二個是空的物體!像這樣:
我不知道,我會失去理智! 請幫忙!
兩次救了我有一個表單添加newCompany,我發送使用AJAX的數據,像這樣: 數據MongoDB中
問題是,當我添加新公司數據插入兩次,第一個是沒有圖像名稱的12個字段!第二個是空的物體!像這樣:
我不知道,我會失去理智! 請幫忙!
您在保存時調用res.redirect('/company/create')
,這會將HTTP302發送到客戶端。客戶端然後再次觸發相同的路線。在您的$.ajax()
請求完成後,嘗試在客戶端執行重定向。
您的評論是有道理的。 我編輯了Ajax呼叫到 '成功:函數(數據,響應){ window.location.href = response.redirect;' ,我刪除了'res.redirect('/ company/create')'路線! 但它不工作! ! –
,即使我改變了重定向到家中,以避免像res.redirect('/ home');'這樣的數據兩次回想相同的路由,也是插入兩次完整對象和空對象的數據! –
看,這是因爲你被重定向到公司的迴應/創建
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');
});
});
如果它不工作,讓我們看看你的模型。問題可能出在
它也行不通,我認爲錯誤是在ajax方法中,因爲當我註釋掉它時,只有一個空對象被髮送到後端! –
你會在上面的問題中找到模型的屏幕截圖。 –
在app.post中添加一個console.log(req.body),再次發送ajax。這樣你確保ajax不會發送兩次數據。 –
我和你有同樣的問題,我在Udemy.com發佈的鏈接後到達這個帖子Q &我們正在關注的課程第37講。
這個問題的解決方案處理「提交」事件不要點擊事件的按鈕,它看起來像在迴應我們的願望得到執行處理單擊事件的代碼,然後它執行的自然行爲(和執行再次路由處理)
這裏是完整的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('');
}
});
}
})
});
但當我檢查網絡標籤發佈只發生一次 –
請複製並過去,你的代碼,然後使用cmd/ctrl + k。謝謝! – pudility