Javascript 提交表单并刷新页面,而不将刷新添加到导航历史记录中

Javascript 提交表单并刷新页面,而不将刷新添加到导航历史记录中,javascript,html,Javascript,Html,我正在Flask上构建一个小型web应用程序,在导航回上一页时遇到了一个相当繁琐的问题 我所尝试的: 不从页面导航-内容已过时 重定向到同一页返回-返回导航已中断(操作再次执行时) 使用JS并使链接执行document.history.go(-2)或document.history.go(-1)-会导致CSP出现问题(到目前为止,我完全没有JavaScript),多次编辑会导致导航返回到同一个站点,这是不好的UX(我可以保留一个计数器,但这并不能解决这种方法的下一个问题),它还保留了导航历史记

我正在Flask上构建一个小型web应用程序,在导航回上一页时遇到了一个相当繁琐的问题

我所尝试的:

  • 不从页面导航-内容已过时

  • 重定向到同一页返回-返回导航已中断(操作再次执行时)

  • 使用JS并使链接执行
    document.history.go(-2)
    document.history.go(-1)
    -会导致CSP出现问题(到目前为止,我完全没有JavaScript),多次编辑会导致导航返回到同一个站点,这是不好的UX(我可以保留一个计数器,但这并不能解决这种方法的下一个问题),它还保留了导航历史记录中的页面,这会把未来搞得一团糟

  • 跟踪所有访问过的页面并基于此生成反向链接-会导致url积累垃圾,还会导致url过长以及不适合在用户之间共享的问题


因此,这一切都归结为那些表单POST操作很麻烦。是否有一种方法我可以只刷新页面(但如果需要重定向到错误页面)?

在HTML中包括一个带有所有输入设置的基本表单

<form id='example-form'>
    <!-- inputs here... -->
    <input type='submit' id='form-submit-button'></input>
</form>
我还没有对此进行测试,所以如果它不能正常工作,我很抱歉——请查看jQuery文档以了解有关jQuery ajax函数的更多信息,一旦您开始编写它们,它们就会变得容易得多

处理DOM事件-


发送Ajax调用-

我不确定您到底遇到了什么问题…您可以使用
window.location.reload()刷新页面,而无需添加历史堆栈
不确定您计划如何处理错误,因此情不自禁。当按下表单提交按钮时,可以选择使用Ajax手动发布。在成功功能中,按照@bm_i对
window.location.reload()的建议执行
,在您的错误函数中,您只需将用户引导到错误页面,或在屏幕上弹出某个内容,或按您认为合适的方式进行处理。@MichaelCurry我必须研究如何切换到使用Ajax,但除了Ajax之外,没有其他选项了吗?与其在表单上执行操作,您只需在JS中为该对象设置一个单击处理程序即可上。如果你使用jQuery,这非常简单,虽然在vanilla JS中也很简单。我相信还有其他选择,虽然Ajax是最简单的,但至少对我来说是这样。我会写一个答案,让你大致了解如何使用Ajax。我可能不会开始使用jQuery,但这肯定让我知道如何使用为了一劳永逸地解决这个问题。谢谢!不需要jQuery-查看此网站,我只是使用它,因为它是我多年来一直使用的东西,并且在我的工作中随时可用:
$('#form-submit-button').on('click', function() {
    $.post('example.domain.com/formSubmit', $('#example-form').serialize(), function() {
        //success - do whatever you need to do here
        window.location.reload();
    }
}).fail(function() {
    //error - you can redirect your user to an error page here or whatever
    alert('error');
});