gpt4 book ai didi

javascript - 在 jquery ajax 上使用 history.pushstate

转载 作者:数据小太阳 更新时间:2023-10-29 06:01:08 25 4
gpt4 key购买 nike

我有一个非常基于 ajax 的应用程序,其中我只有一个登录页面和主页。

我的大部分链接都是“ajaxed”的,我是这样完成的:

//get the href of the link that has been clicked, ajaxify ANY links

$(document).on('click', '.tree a', function () {

var link = $(this).attr('href'); //get the href off the list
$.ajax({ //ajax request to post the partial View
url: link,
type: 'POST',
cache: false,
success: function (result) {
$('#target').html(result);
$.validator.unobtrusive.parse($("form#ValidateForm"));
}
});
return false; //intercept the link
});

我想在我的应用程序上实现“pushState”,到目前为止我所做的第一步是添加以下代码:

$(document).on('click', 'a', function () {
history.pushState({}, '', $(this).attr("href"));
});

现在,每当我单击任何链接并且 ajax 内容成功加载时,它都会更新我的地址栏。我对这个 API 有点陌生,所以我不知道我错过了什么,但这是我目前遇到的问题:

  1. 当我按下“后退”按钮时,没有任何反应。我阅读了“popstate”并浏览了 SO 以寻找解决方案,但我不能似乎让它们发挥作用。

  2. 当我单击历史记录中的链接时,我得到了没有主 html 布局的子 html 的“原始” View 。如果我想让它像这样显示,我需要做什么它是从我的主应用程序中点击的吗?

我的大部分 subview 都是表单或列表。

最佳答案

这段代码应该可以帮助你:

function openURL(href){

var link = href; //$(this).attr('href');
$.ajax({
url: link,
type: 'POST',
cache: false,
success: function (result) {
$('#target').html(result);
$.validator.unobtrusive.parse($("form#ValidateForm"));
}
});
window.history.pushState({href: href}, '', href);
}

$(document).ready(function() {

$(document).on('click', 'a', function () {
openURL($(this).attr("href"));
return false; //intercept the link
});

window.addEventListener('popstate', function(e){
if(e.state)
openURL(e.state.href);
});

});

关于javascript - 在 jquery ajax 上使用 history.pushstate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35141973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com