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

时间:2014-10-21 20:34:04

标签: javascript php jquery html5 redirect

我希望在不重新加载的情况下删除一定数量的网页网址。

我已经查看了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

正常进行

我有什么:

这是我希望在不重新加载的情况下编辑的示例网址:

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秒后消息消失。但是我留下了这个网址:

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

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

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

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

此外,

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

为什么我在标题中添加了TWIST?好吧,我的要求与我到目前为止看到的问题有所不同。如果我错了,请纠正我,我会改变它。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

简单的答案是否定的。这就是他们添加pushState的原因。

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

示例:

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

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

答案 1 :(得分:0)

我所知道的唯一方法是:

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

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