我遇到了问题。由AJAX动态页面更新
我使用AJAX加载页面,并且它能正常工作,但我无法逃脱一个错误。
当我加载页面时,第一次可以正常工作,但是当我转到另一页面时,AJAX加载了我想要的页面,但它有双重标签,如<head>
和<footer>
。
我的意思是当我第二次加载页面时,页面会在<div>
中加载相同的页面。 这就像画中画。
我在模板代码中使用这样的:
<?php echo $header ?>
My content
<?php echo $footer ?>
而且每一个页面加载相同的代码后,我回到以前的页面通过链接。
我的Ajax代码:
function showContent(link) {
var cont = document.getElementById('content');
var loading = document.getElementById('loading');
window.history.replaceState('', 'Title', link);
cont.innerHTML = loading.innerHTML;
var http = createRequestObject(); // создаем ajax-объект
if(http) {
http.open('get', link); // инициируем загрузку страницы
http.onreadystatechange = function() { // назначаем асинхронный обработчик события
if(http.readyState == 4) {
cont.innerHTML = http.responseText; // присваиваем содержимое
}
}
http.send(null);
} else {
document.location = link; // если ajax-объект не удается создать, просто перенаправляем на адрес
}
}
// создание ajax объекта
function createRequestObject() {
try { return new XMLHttpRequest() }
catch(e) {
try { return new ActiveXObject('Msxml2.XMLHTTP') }
catch(e) {
try { return new ActiveXObject('Microsoft.XMLHTTP') }
catch(e) { return null; }
}
}
}
我能做些什么? 因为如果我删除标签页眉和页脚我的页面根本没有设计。 正如你看到的,我改变了URL(对我很重要)。
我需要解决方案,它将帮助我加载模板,而不需要双重标记。
什么'console.log(http.responseText)'在第二次点击显示?这会告诉你是否存在提供页面内容的服务器脚本中的问题。 – bloodyKnuckles