繁体   English   中英

如何在不重新加载页面的情况下更改URL? -扭曲

[英]How do I change URL without reloading page? - WITH A TWIST

我想删除一定数量的页面URL而无需重新加载。

我已经在StackOverflow上找到了答案,并且有一些很接近的答案,但并不是我真正想要的。

我不想使用哈希函数,如果可能的话,请避免使用HTML5版本,因为HTML5还不是批准的标准,并且对于将要使用的网站,对于某些客户端,我一点都不感到惊讶使用的是IE6。

我希望它不是具有400行代码的极其复杂的解决方案(老实说,为此我宁愿只是重新加载页面)。

我忘了提到这个关键问题

The user is directed from a different page with this string via PHP. So for example:

user submits a form with errors. Let's say the form is on /myform.php

The user gets headed to /index.php?string

照常进行

我有的:

这是一个示例URL,我希望在不重新加载的情况下进行编辑:

http://www.mywebsite.com/index.php?string

等待! 字符串在/index.php上有用途

index.php将使用$ _GET ['string']; 并向用户显示一条消息

我已经使用JQuery在4秒后删除了消息,如下所示:

<div id="pagemsg"><?php echo $string; ?></div>

<script language="javascript">
    setTimeout( "$('#pagemsg').fadeOut();", 4000);
</script>

一切正常,该消息在4秒钟后消失。 但是我留下了这个URL:

http://www.mywebsite.com/index.php?string

我不再需要此字符串,因为?string已经完成了它的工作!

我想删除?string而不重新加载while页面。

有什么解决方案可以帮助我吗?

也,

我不介意是否必须使用HTML5推送功能,但是对于不支持HTML5的浏览器是否有一个后备解决方案?

为什么在标题中加上WITH TWIST? 好吧,我的要求与到目前为止所看到的问题不同。 如果我错了,请纠正我,我将对其进行更改。

谢谢您的帮助!

简单回答是不。 这就是为什么他们添加了pushState的原因。

但是,您似乎正在尝试完成一个称为Flash消息传递的相当常见的情况。 通常,这是通过使用用户会话来存储消息以在下一个请求上显示(然后将其删除)来完成的。

例:

function doImportStuff() {
    // ...
    $_SESSION['message'] = 'important stuff was done';
    // ...
}

function showBoringPage() {
    // ...
    if (isset($_SESSION['message']) {
        echo '<b>' . $_SESSION['message'] . '</b>';
        unset($_SESSION['message']);
    }
    // ...
}

我知道的唯一方法是:

if (history && history.pushState){
   history.pushState(null, null, '/new/url');
}

但这是HTML5,在您的情况下不起作用。
对于旧的浏览器-和您: History.js

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM