我有一个小型数据库,可以预订事件的候选人,并且我使用名为“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'的内容,就像用户刷新页面一样会导致页面加载错误。
可以这样做,还是应该考虑另一种传递回复的方法?
答案 0 :(得分:0)
这可能有用。如果您有一个类似于http://foo.bar?meow=stuff&message=heyo的网址,则最终应该使用http://foo.bar/?meow=stuff
如果您从http://foo.bar开始,最终会得到http://foo.bar/?但这不应该伤害任何事情。
let remove = str => '?' + location.search.substring(1).split('&').filter( q => q.indexOf(str)).join('&');
history.pushState(null, 'hide', remove('message'));
&#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或会话变量。您可能想要提出另一个问题,概述用户工作流程以及您尝试实现的目标。