我正在使用ajax这样做并且在后端响应res.end
但是到目前为止,我只能发布一次。这是我的代码:
app.post("/awesome", passwordless.restricted({ failureRedirect: "/" }), (req, res, next) => {
// ...do a bunch of stuff
res.end();
});
$("[data-new-save]").on("click", function () {
$.ajax({
url: "/awesome",
type: "POST",
data: awesomeDetails,
success: function () {
console.log("Cool beans");
refreshContent(); // Re-renders content
// Feedback
$("nav").after("<div class=\"flash success\">Success!</div>");
setTimeout(function () {
$(".flash").remove();
}, 5000);
},
error: function () {
console.log("Welp");
// Feedback
$(".navigation").after("<div class=\"flash error\">Failure</div>");
setTimeout(function () {
$(".flash").remove();
}, 5000);
}
});
});
答案 0 :(得分:1)
这听起来像是事件委派的案例。我最好的猜测是,您的refreshContent()
函数正在移除原始[data-new-save]
元素并创建新元素。这将导致绑定的click
事件被删除,并且它是最初调用时存在的DOM节点的属性。你可以通过将事件委托给一个没有“刷新”的DOM节点来解决这个问题,我假设<body>
标签没有被重绘,只有一些子节点,所以如果你定位{{ 1}}并查找匹配<body>
的选择器,它应该正常运行:
"[data-new-save]"
答案 1 :(得分:0)
这就是我用于类似的东西:
=