我知道有类似的主题,但我仍然没有得到有效的解决方案。我想将$.post
方法发送到服务器,在此之前我想修改URL(允许用户彼此共享URL)但不重新加载页面。怎么做?
修改:换句话说,我想使用$.post
方法来过滤页面上显示的数据。但我也想修改用户可以复制它的URL。
答案 0 :(得分:2)
如果您的用户使用的是现代浏览器(几乎所有非IE浏览器),您可以使用新的HTML5 history methods。具体而言,history.replaceState
。
replaceState()
会更改页面的网址而不会重新加载。您可以像这样使用它:
$.post('/some/url/', {some: data}, function(d){
// Do whatever with the returned data...
// Change page URL
history.replaceState({}, '', '/some/url/');
});
或者您可以在加载数据之前更改URL:
// Change page URL
history.replaceState({}, '', '/some/url/');
// load page data
$.post('/some/url/', {some: data}, function(d){
// Do whatever with the returned data...
});
有关replaceState
的示例,请转到此处:https://github.com/features/projects,然后点击4个标签。观看网址更改,但没有添加到历史记录中: - )
答案 1 :(得分:0)
这是不可能的。您可以在不重新加载的情况下修改的URL中唯一的部分是#(hash a.k.a.片段)之后的部分。之前的其余部分将启动新(或旧)URL的加载。
您可以使用以下javascript更改它(使用重新加载):
location.href = 'http://www.whatever.com';
答案 2 :(得分:0)
也许这就是你想要的?
<body>
...
<div id='urltocopy'></div>
...
</body>
function doPost() {
$('#urltocopy').html('<a href="http://newurltocopy">Please copy</a>');
$.ajax({
type: 'POST',
url: urlStr,
dataType: 'html',
success: function(data) {
},
data: {},
});
}