加载后隐藏特定的URL变量

时间:2017-06-21 22:25:43

标签: javascript php jquery

我有一个小型数据库,可以预订事件的候选人,并且我使用名为“message”的GET变量传递消息

运行jQuery弹出窗口进行确认的示例如下:

www.domain.com/load_page.php?id=1&message=BookingCreated

然后会触发弹出消息。我正在使用JQuery确认:

if(window.location.href.indexOf("message=BookingCreated") > -1) {
            $.alert({theme: 'custom', title: 'Booking Confirmed',content: 'Confirmation has been sent to both you and the candidate.',});  
        } 

但是我想在页面加载后隐藏'message'变量,但我只知道如何使用以下方法隐藏所有变量:

if(typeof window.history.pushState == 'function') {
    window.history.pushState({}, "Hide", '<?php echo $_SERVER['PHP_SELF'];?>');
}

这会给我www.domain.com/load_page.php,但我只想隐藏任何包含'message'的内容,就像用户刷新页面一样会导致页面加载错误。

可以这样做,还是应该考虑另一种传递回复的方法?

2 个答案:

答案 0 :(得分:0)

这可能有用。如果您有一个类似于http://foo.bar?meow=stuff&message=heyo的网址,则最终应该使用http://foo.bar/?meow=stuff

如果您从http://foo.bar开始,最终会得到http://foo.bar/?但这不应该伤害任何事情。

&#13;
&#13;
let remove = str => '?' + location.search.substring(1).split('&').filter( q => q.indexOf(str)).join('&');
history.pushState(null, 'hide', remove('message'));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我会看一个URI.js

解析URI,然后通过.removeSearch函数

删除参数
URI("www.domain.com/load_page.php?id=1&message=BookingCreated")
    .removeSearch("message")
    .toString()
        // -> "www.domain.com/load_page.php?id=1"

但正如评论中所述。可能有更好的方法来处理这个问题。使用POST或会话变量。您可能想要提出另一个问题,概述用户工作流程以及您尝试实现的目标。