【问题标题】:Redirect to a different URL on page refresh [duplicate]在页面刷新时重定向到不同的 URL [重复]
【发布时间】:2020-02-20 07:07:12
【问题描述】:

我想发送一个帖子请求,当用户单击网站中的刷新按钮时,该请求又将重定向到不同的网址

 $(window).on('beforeunload', function(){
     console.log(`Page Reloaded`)
     function redirectPost(url, data,name) {

         var form = document.createElement('form');
         document.body.appendChild(form);
         form.method = 'post';
         form.action = url;
         var input = document.createElement('input');
         input.type = 'hidden';
         input.name = name;
         input.value = data;
         form.appendChild(input);  
         form.submit();
     }

   redirectPost("/incompleteOrder",$("#orderNumber").val(),"orderNumber")

});

此代码应模拟在页面重新加载期间使用表单发送发布请求。在我的后端 Nodejs 代码中,我有一个 post url,它基本上执行一些数据库输入并重定向到 get url 以呈现单击刷新的同一页面。

但是,即使显示页面重新加载的控制台消息闪烁了几秒钟,对/incompleteOrder 的发布请求甚至都不会在我的后端触发。它完全忽略了我的表单提交。

【问题讨论】:

  • 您可能需要在这里preventDefault .. 为什么将此事件附加到 beforeunload 而不是用户应该单击的按钮上?您可能会通过重定向而违反安全规则,而无需用户以这种方式调用它。通常,您会以这种方式通过对话框提醒用户,并在用户与该对话框的交互时执行重定向。

标签: javascript jquery


【解决方案1】:

发送ajax请求怎么样?

$(window).on("beforeunload", function () {
    $.ajax({
        type: 'POST',
        url: '/incompleteOrder',
        data: {
            orderNumber: $("#orderNumber").val()
        },
        success: function () {
        }
    })
})

【讨论】:

  • 由于某种原因,这确实触发了 post 路由,然后触发了我的 get 路由。但问题是获取路径,因为在我想要的获取路径之前刷新触发。我试过e.preventDefault(),但没有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 2010-12-05
  • 1970-01-01
  • 2012-07-07
  • 2021-10-22
相关资源
最近更新 更多