我對所有這些(包括Javascript回調和ES6)有點新。我正在使用NodeJS + Express + MongoDB。
我打電話給一個Ajax函數來更新一個項目,並且成功的Ajax調用從未完成。
這裏是我的Ajax調用(從陣營調用)
editBug : function(bug){
console.log('about to edit bug with these values',bug);
$.ajax({
url:'/api/bugs',
method: 'PUT',
data:bug
})
.done((jqxhr) => {
console.log('succcess while editing the bug');
this.setState({successVisible : true});
})
.fail((jqxhr) => {
console.log('error : ' + jqxhr);
})
},
這裏是我的API函數:
app.put('/api/bugs',function(req,res){
//console.log('req',req);
console.log('query string : ',req.query);
console.log('query params : ',req.params);
console.log('query body: ',req.body);
let id = new ObjectID(req.body._id);
req.body._id = new ObjectID(req.body._id);
db.collection('bugs').replaceOne(
{_id:id},
req.body,
function(err,result){
assert.equal(err,null);
console.log('Successfull replace!');
res.status(200);
}
);
});
的Successfull replace!
日誌在服務器端正確顯示。 正面顯示about to edit bug with these values
正面。但succcess while editing the bug
日誌不顯示在前端,似乎.done
調用永遠不會執行。
您不提及是否調用了fail()。 –
你使用的是什麼版本的jquery? Promise被添加到jquery 1.6 –
@ freedomn -m'失敗()'不被調用。 – nicolasdaudin