【问题标题】:PHP/JS Go back to previous page not working correctlyPHP/JS 返回上一页无法正常工作
【发布时间】:2017-02-20 15:41:42
【问题描述】:

所以我有一个提交按钮,它将数据更新到数据库,然后应该返回上一页。我的问题是当用户单击任何其他按钮然后单击提交按钮时...它停留在同一页面上。我怎样才能使它工作?这样它实际上会使用 diff url 转到上一页。

  <script type="text/javascript">
    function goBack() {
    setTimeout("history.go(-1);", 5);
    }
  </script>

<input type="submit" value="submit" name="submit" id="button" onclick="goBack()">

【问题讨论】:

  • 这不是用户想要做的主要方式。我的话让您的用户体验像其他网络应用程序一样。

标签: javascript php jquery


【解决方案1】:

如果您能够修改您的代码以允许这样做,您可以尝试使用按钮而不是输入:

 <script type="text/javascript">
    function goBack() {
    setTimeout("history.go(-1);", 5);
    }
  </script>

<button type="button" onclick="goBack()">
Go Back
</button>

<button type="button">
Test Button
</button>

【讨论】:

  • 这将与我现在所做的完全相同。
  • 我在chrome上,当我运行代码sn-p时,我可以按测试按钮一百万次,当我点击返回按钮时返回上一页。跨度>
【解决方案2】:

您可能正在向 url 添加带有其他按钮的查询字符串,在这种情况下,您之前的 url 不是您所期望的。 例如,您的 url 是 helloworld.com,并且某个按钮正在向 url 添加#some,从而导致 helloworld.com#some ... 在这种情况下,之前的 url 将是没有 #some 的 helloworld.com ... 如果这就是你得到的,必须照顾好这个。 我认为您可以将要返回的 url 保存在变量中,然后从那里重定向。

--- 编辑 ---

在最新的 cmets 的基础上,我建议您使用 AJAX 来执行此操作,因为我认为您正在尝试以错误的方式做某事。 从一开始,你得到的就是预期的。提交按钮执行对表单 url 的请求(如果未定义,则与您所在的 url 相同)。因此,您不在同一页面中,而是正在重新加载页面。在这种情况下,前一个 URL 是相同的(或者看起来是相同的)。 使用 AJAX,在最基本的形式中,您可以执行以下操作:

<script>
var submitElement = document.querySelector('input[type="submit"]');

submitElement.addEventListener('click', function(e) {
    e.preventDefault();
    var ajax = new XMLHttpRequest();

    ajax.open( "POST", url, true );
    ajax.setRequestHeader("Content-type", "application/x-www-form-   urlencoded");
    ajax.send( params );
    ajax.onreadystatechange = function() {
        if(ajax.readyState == 4 && ajax.status == 200){
            setTimeout(function() {
                window.history.back();
            }, 5);
        }
    }
});
</script>

我只是向您展示如何从 JS 执行 ajax 调用...从 PHP 方面,您必须采用表单参数将它​​们保存在数据库中,但这与您现在所做的几乎相同,我想你知道怎么做。 希望这能澄清您的问题和解决方案。

【讨论】:

  • 如果每次点击按钮都会刷新页面,我如何将 url 保存在变量中......这意味着我的变量将始终被更新??
  • 因为你可以用 PHP 定义 url...例如,你可以定义一个 JS 变量并用 php( var someVar = ) 填充它...但是进一步考虑,我知道您并没有阻止提交事件...我建议添加事件侦听器而不是在“onclink”中进行回调...示例:
  • document.querySelector('input[type="sumbit"]').addEventListener('click', function(e){ e.preventDefault(); window.history.back(); } )... 但在这种情况下,您需要使用 AJAX 执行操作,而不是生成新请求。
  • 我将如何使用 ajax 来做到这一点?抱歉,我对此很陌生。
  • 是的,我可以在 php 中定义 url,但 url 是动态的。例如:page.php?index=10 并且用户可以来自 index=...任何数字
猜你喜欢
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
  • 2017-08-22
  • 2020-05-19
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
相关资源
最近更新 更多