我有一个测试应用程序:http://dev.driz.co.uk/ajax/
您可以使用jQuery AJAX点击链接来加载其他页面,其中有两种类型,globalTabs和localTabs,它们将内容加载到不同的面板中。请注意:每个页面实际上都是完整页面,但我们只是使用jQuery find方法获取我们想要的内容。
为了增强功能,我正在使用HTML5 History API(跨浏览器使用History.js)。
标题和URL更改良好,并且历史记录堆栈已成功推送,当我使用后退和前进按钮时,URL和标题确实恢复了。
现在,复杂的部分是从先前状态加载回内容,以及更复杂的是加载正确类型的内容,例如全局或本地ajax。为了实现这一点,我认为需要同时传递数据和类型给pushState,以便可以在popstate中再次重用它...
有人能帮助我指出正确的方向吗?我已经完成了所有第一部分的工作,只需要让它将ajax类型传递给pushState,然后在popstate更改时重新使用它。
为了改进它,我按照以下方式进行了重写,展示了我传递类型和数据的计划:
注意:我的大写“History”是因为我使用了History.js。
为了增强功能,我正在使用HTML5 History API(跨浏览器使用History.js)。
标题和URL更改良好,并且历史记录堆栈已成功推送,当我使用后退和前进按钮时,URL和标题确实恢复了。
现在,复杂的部分是从先前状态加载回内容,以及更复杂的是加载正确类型的内容,例如全局或本地ajax。为了实现这一点,我认为需要同时传递数据和类型给pushState,以便可以在popstate中再次重用它...
有人能帮助我指出正确的方向吗?我已经完成了所有第一部分的工作,只需要让它将ajax类型传递给pushState,然后在popstate更改时重新使用它。
为了改进它,我按照以下方式进行了重写,展示了我传递类型和数据的计划:
注意:我的大写“History”是因为我使用了History.js。
var App = {
init: function() {
$(document).ready(function() {
$('.globalTabs li a').live('click', function (e) {
e.preventDefault();
App.globalLoad( $(this).attr('href') );
});
$('.localTabs li a').live('click', function (e) {
e.preventDefault();
App.localLoad( $(this).attr('href') );
});
});
window.addEventListener('popstate', function(event) {
// Load correct content and call correct ajax request...
});
},
localLoad: function ( url ) {
$.ajax({
url: url,
success: function (responseHtml) {
$('.localContent').html($(responseHtml).find('#localHtml'));
$data = { $(responseHtml).find('#localHtml'), 'local'};
History.pushState($data, $(responseHtml).filter('title').text(), url);
}
});
},
globalLoad: function ( url ) {
$.ajax({
url: url,
success: function (responseHtml) {
$('.mainContent').html($(responseHtml).find('#globalHtml'));
$data = { $(responseHtml).find('#globalHtml'), 'global'};
History.pushState($data, $(responseHtml).filter('title').text(), url);
}
});
}
};
App.init();
更新:为了澄清这个问题,我需要帮助解决两个问题。
1.) 使ajax请求的后退和前进按钮正常工作,以便它们将正确的数据加载回内容区域。
2.) 使用pushState方法将内容传递到正确的区域,以便它知道是全局div还是本地div请求。
Uncaught TypeError: Converting circular structure to JSON
有什么想法吗?http://dev.driz.co.uk/ajax/ - Cameron