Javascript 使用ajax post方法的控制台日志记录数据
因此,我试图通过jquery发出post请求,然后将数据对象记录在请求的回调函数中。 客户端:Javascript 使用ajax post方法的控制台日志记录数据,javascript,jquery,Javascript,Jquery,因此,我试图通过jquery发出post请求,然后将数据对象记录在请求的回调函数中。 客户端: var save = $('<button/>',{ class: 'btn btn-link', id: url, type: 'submit', value: 'Submit', text: 'save for later?', click: function(event){
var save = $('<button/>',{
class: 'btn btn-link',
id: url,
type: 'submit',
value: 'Submit',
text: 'save for later?',
click: function(event){
var reqData = { article : this.id};
$.post('/profile', reqData, function(data){
console.log(data);
})
}
我不断收到错误消息“发送后无法设置标题”,如果我注释掉res.send(doc);在.exec承诺中,数据将被保存在console.log中,但页面将快速刷新并删除它。错误
“发送后无法设置标题”
表示您尝试多次响应。最初会发送最后一个res.send
,然后一旦计算了exec
回调的if/else,就会尝试第二次res.send
。看起来您要调用res.send(doc)
两次。移除底部的呼叫。为了避免页面重新加载,我想您需要调用event.preventDefault()在你的按钮的点击处理程序中的代码>中。你正在以承诺的形式发送响应,之后,这也是正常的,当它发送previouslyevent.preventDefault时,你有第二次发送。我正在构建一个应用程序(在大多数情况下都能正常工作),它是jQuery和我猜event的一个很好的复习工具。我忘记了,我知道这个问题很简单,我会记住在将来提出更深思熟虑的问题。好的,我看得更清楚了,我知道这个问题很简单,我只是被两种不同的情况困住了。
router.post('/profile', function(req, res) {
console.log(req.body);
// User.find();
console.log(req.user._id);
var article = new Article({article: req.body.article});
article.save(function(error, doc) {
if (error) {
res.send(error);
} else {
var id = doc._id;
User.findOneAndUpdate({
_id: req.user._id
}, {$push :{
article: id
}}).exec(function(err, doc) {
if (err) {
res.send(err);
} else {
res.send(doc);
}
})
res.send(doc);
}
})