我很确定这里有一个非常简单的解决方案,但是我似乎没有想到最好的方法。我正在使用利用History API的History.js。可以说我从以下页面开始:
<div ="header">
Header
</div>
<div id="content">
Content
</div>
<div id="footer">
Footer
</div>
我处理AJAX调用的方式是用新的html替换#content的内容。因此,例如,我加载的文字为“内容2”。在用户导航回到他们在我的网站上访问的第一页之前,所有这些操作都很有效,因为它试图加载完整的第一页(包括#header和#footer,因此我最终得到:
<div ="header">
Header
</div>
<div id="content">
<div ="header">
Header
</div>
<div id="content">
Content
</div>
<div id="footer">
Footer
</div>
</div>
<div id="footer">
Footer
</div>
我知道有一种更好的方法来构建页面结构来避免此问题,但是我似乎无法弄清楚它是什么。这是我正在使用的代码:
(function(window,undefined){
var
History = window.History,
State = History.getState();
History.Adapter.bind(window,'statechange',function(){
var State = History.getState();
$.ajax({
url: History.getState().url,
cache: false
}).done(function( html ) {
$("#content").html(html);
});
});
})(window);
关于解决此问题的正确方法有什么想法?
最佳答案
<?php
$is_ajax = isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && ( $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' );
if ( $is_ajax ) {
// Give the content
} else {
// Give a full page
}
?>