Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用自定义javascript后退按钮时删除POST数据_Javascript_Php_Session_Cookies_Navigation - Fatal编程技术网

使用自定义javascript后退按钮时删除POST数据

使用自定义javascript后退按钮时删除POST数据,javascript,php,session,cookies,navigation,Javascript,Php,Session,Cookies,Navigation,我已经通过javascript将一些自定义导航按钮编码到我正在处理的项目中——它们基本上复制了浏览器按钮功能(brief最初不清楚为什么需要单独的按钮,但他们要求使用它们): 但是,由于功能与“浏览器后退”按钮相同,如果我返回到包含所述帖子数据的页面,网站会询问我是否要重新提交帖子数据,这是不可取的。理想情况下,为了适应当前的站点设置(所有帖子都提交到原始页面,该页面检查帖子数据并向数据库执行相关提交),我希望清除帖子数据,这样就不会有重新提交的请求 我不熟悉人们可能推荐的Post/Redire

我已经通过javascript将一些自定义导航按钮编码到我正在处理的项目中——它们基本上复制了浏览器按钮功能(brief最初不清楚为什么需要单独的按钮,但他们要求使用它们):

但是,由于功能与“浏览器后退”按钮相同,如果我返回到包含所述帖子数据的页面,网站会询问我是否要重新提交帖子数据,这是不可取的。理想情况下,为了适应当前的站点设置(所有帖子都提交到原始页面,该页面检查帖子数据并向数据库执行相关提交),我希望清除帖子数据,这样就不会有重新提交的请求

我不熟悉人们可能推荐的Post/Redirect/Get(PRG),而且它似乎也不包括持续按“back”的概念;如果您提交表单,您将发布到处理post操作的页面,然后重定向到GET页面-但重定向仍在历史记录中,这意味着如果您返回,您肯定会点击重定向页面并被发送到“前进”页面?另外,PRG似乎主要集中在页面刷新上,这不是我目前正在寻找的

PRG的概念似乎也是由于浏览器后退按钮不允许额外的代码来控制POST数据,因此编码人员必须充分利用他们可以访问的内容

<我的相对自由拥有自定义后退按钮,它允许操纵POST /会话/ cookie数据,我认为应该有一些方法在后退按钮按压中调用全局会话变量或cookie,然后在上一页加载中拾取以取消POST数据和全局会话变量/Cookie,但是我尝试实现类似的东西并没有成功-它们是简单的单行
setcookie('back',true)
set($\u SESSION['back']=true)
PHP片段,在
goBack()
中,PHP在页面前面:

<?php if (isset([either set cookie or set session variable]) {
    unset([either set cookie or set session variable]); // also tried changing 'true' to 'false' here
    unset($_POST);
}?>

我认为这应该可以做到:

function goBack() { 
    var referrer = document.referrer;
    if(referrer != '') {
        window.location = referrer;
    } else {
        window.history.back();
    }
}

我怀疑返回2页可以解决您的问题,但可能我没有得到您真正想要的。问题的主要焦点是,在通过javascript的window.history.back()返回时,是否可以将代码放入goBack()中,以删除/取消设置POST数据。按钮出现在所有页面上;是否有办法确定是否有POST数据,然后返回两页(如果有)?不确定这是否提供了所需的功能,但如果可能的话,愿意尝试;从“第1页”->“第2页”->“第3页”->“第4页”导航,然后按三次返回到4->3->4->3,而不是4->3->2->1。我认为,在历史堆栈中导航是必要的;更重要的是要以某种方式剥离帖子数据,或者在按下后退按钮时忽略对页面执行的帖子。不幸的是,我不知道如何获取“history.go(-1)”的url。我认为出于隐私原因不允许这样做,你为什么不重新加载登录页?我对你的术语“登录页”有点困惑,但我想你指的是按“后退”按钮进入的页面。我的印象是页面将作为window.history.back()操作的一部分重新加载;如果有一种方法可以让页面在没有POST数据的情况下重新加载,那么这将解决我的问题。我不确定这是否有效,但我的意思是重新加载页面以切换您发布的数据。例如:1/page1.php将数据发布到/page2.php 2中/php使用数据并重新加载自身3。在重新加载的/page2.php上使用“window.history.back();”
function goBack() { 
    var referrer = document.referrer;
    if(referrer != '') {
        window.location = referrer;
    } else {
        window.history.back();
    }
}