【发布时间】:2021-01-09 22:52:03
【问题描述】:
我对 AJAX 很陌生,我不确定自己做错了什么。我有一个网页,可以通过 AJAX 获取请求获取帖子上的所有 cmets。问题是AJAX请求只有在网页刷新后才能成功。我禁用了缓存以查看是否可以解决问题,但它没有。
例如,当我从帖子 A 刷新页面后获取第一个 cmets,然后转到网站上的帖子 B,帖子 A 中的 cmets 显示为帖子 B 的 cmets,然后当我刷新页面时帖子 B 的 cmets 已成功替换为帖子 B 的 cmets。
我正在使用 jQuery 发出请求:
$.ajax({
type: "GET",
url: someURL,
success: (comments) => {
console.log(comments);
comments.questions.forEach(questionComment => {
$('.questionComments').append(
`<div class="comment">
<p>${questionComment.content}</p>
</div>
`
)
});
comments.answers.forEach(answer => {
answer.forEach(answerComment => {
$(`.answer#${answerComment.forId} .answerComments`).append(
`<div class="comment">
<p>${answerComment.content}</p>
</div>
`
)
})
})
},
cache: false
})
服务器端:(express.js、猫鼬)
let allComments = {}
app.get('/questions/:questionID/getComments', (req, res) => {
if (err) return console.error(err)
Comment.find({ forQuestion: true, forId: req.params.questionID }, (err, questionComments) => {
allComments['questions'] = questionComments
})
Answer.find({ questionId: req.params.questionID }, (err, answers) => {
if (err) return console.error(err);
allAnswerComments = []
answers.forEach(answer => {
Comment.find({ forAnswer: true, forId: answer._id }, (err, comments) => {
allAnswerComments.push(comments)
})
});
allComments['answers'] = allAnswerComments
})
res.send(allComments)
})
当您导航到不同的帖子/不同的 URL 时,上一个帖子/URL 中的对象是新帖子的初始对象,然后当您重新加载页面时,会获取正确的对象。
【问题讨论】:
-
你肯定是在一些特殊的上下文中写的,比如一个函数什么的。代码不足以找出问题所在
-
@Andreas 你需要更多代码吗?
-
@JeremyThille 您需要更多代码吗?
-
好吧,您似乎将它们全部设置为页面
$('.questionComments').append(上的所有.questionComments,这与您使用ID 的另一个不同......
标签: javascript jquery node.js ajax