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

标签 javascript html

我正在 Flask 上构建一个小型网络应用程序,但在导航回上一页时遇到了一个相当乏味的问题。

我尝试过的:

  • 没有离开页面 - 内容已过时

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

  • 使用 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>

然后在你的 JS 中为此编写一个处理程序,我在下面使用 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');
});

我还没有对此进行测试,所以如果它不能立即工作,我深表歉意 - 查看 jQuery 文档以获取有关 jQuery ajax 函数的更多信息,一旦您开始编写它们,它们就会变得容易得多。

处理 DOM 事件 - https://api.jquery.com/on/

发送 Ajax 调用 - https://api.jquery.com/jquery.post/

关于javascript - 提交表单并刷新页面而不将刷新添加到导航历史记录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48284392/

相关文章:

javascript - 如何强制复选框表现得像单选按钮、双循环

javascript - KeyPress Javascript 函数的问题

javascript - 在 jQuery 中更改多个标签的背景颜色

javascript - ReactjsangerlySetInnerHtml 替代方案

html - CSS 间距关闭,不确定是什么原因造成的

html - 'url'、 'src' 和 'href' 之间的区别

PHP 从 HTML 类中获取文本

javascript - 如何跟踪在网站上花费的时间

javascript - 如何获取上传的cloudinary小部件图像信息?

Python BeautifulSoup 抓取动态容器