如何在没有更改提示的情况下将用户重定向到新页面而不退出

时间:2017-01-02 17:47:20

标签: javascript php jquery forms laravel-5.2

我正在使用Laravel 5.2并处理其他人的代码,它有一个表单缺少在服务器端存储表单值所必需的字段。我添加了一个新的隐藏输入字段,并通过以下代码设置它的值。

<form method="POST">
    <input type="hidden" value="" id="hidden_field" />
    <input type="submit" class='action_button' data-action='save' />
</form>

$('.action_button').on('click', function(event) {
    event.preventDefault();
    $('#hidden_field').val($(this).data('action');
    $('#form').submit();
});

现在提交表单,数据存储在服务器端,控制器的末尾有以下代码。

return redirect(url('home'));

虽然逻辑现在正常工作,但每当我尝试进行一些更改并提交表单时,服务器端会告诉浏览器重定向,但浏览器认为我有未保存的更改,因此它向我显示退出但不保存或保留的提示。如何在不完全禁用提示的情况下避免使用它?

2 个答案:

答案 0 :(得分:1)

经过长时间的调试后,我的问题得到了解决,由于某些全局JS文件对页面上的每个输入按钮都有window.onbeforeunload,因此出现错误。我发布这个 任何可能面临这个问题的人。确保您具有以下点击功能。

$('.action_button').on('click', function(event) {
    event.preventDefault();
    window.onbeforeunload = null;
    $('#hidden_field').val($(this).data('action');
    $('#form').submit();
});

答案 1 :(得分:0)

浏览器显示提示消息,因为您正在使用发布方法。我认为它会在firefox上提示,但不会在google chrome上提示。

解决方案是更改帖子以获取方法。当然,如果您发布数据,则不应该这样做。您也可以尝试使用一些javascript代码,但是当我遇到非常类似的问题时,它没有帮助。