我们一直致力于在Web应用程序,我们已经差不多了它完成了,但有一件事困扰着我们(但绝非是要停止生产。)
当我们调用页面(的index.html)中的一个,我们有时必须通过它的URL(searchid)的变量。 因此,我们得到这样一个页面http://domain.com/index.html?searchid=string
。
我们会非常愿意不显示?searchid=string
,但我不知道怎么会做到这一点。
我的小组没有自己的index.html页面(但我们正在与不团工作),所以我不知道我们多么希望能与喜欢什么做.htaccess
或相似。
我在想POST
荷兰国际集团的变量,但我不知道如何与刚HTML和jQuery接受它。 另一个人在我的组认为加载页面后,我们可以从URL中删除它,但我认为,我们需要刷新页面然后会丢失数据反正。
我试图避免XY问题,问题出在哪里是X,我问Y,有啥删除URL变量的正确方法?
你的问题似乎表明,目标页面也不会被一些服务器端脚本来供电。 如果是这样的话,我会建议改变查询字符串的哈希值,其中有被而不触发页面加载直接编辑的优势:
http://yourdomain.com/page.html#search=value
<script type='text/javascript'>
// grab the raw "querystring"
var query = document.location.hash.substring(1);
// immediately change the hash
document.location.hash = '';
// parse it in some reasonable manner ...
var params = {};
var parts = query.split(/&/);
for (var i in parts) {
var t = part[i].split(/=/);
params[decodeURIComponent(t[0])] = decodeURIComponent(t[1]);
}
// and do whatever you need to with the parsed params
doSearch(params.search);
</script>
虽然,这将是更好地得到这里所涉及的一些服务器端脚本。
您可以使用历史API,但它确实需要一个现代浏览器
history.replaceState({}, null, "/index.html");
这将导致您的网址显示为/index.html无需重新加载页面
点击此处了解详情:
操纵浏览器历史记录
这有可能改写使用JavaScript的历史API的URL。 History.js的是,这是否很好的库。
话虽这么说,我不认为有任何需要从URL中移除查询字符串,除非你是动态改变页面的内容,以目前的查询字符串无关。
你可以发布数据,然后让服务器在页面中包含,例如发布的数据:
echo "<script> post_data = ".json_encode($_POST)." </script>";
这工作跨浏览器。