我有一个问题。
我正在使用 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(对我来说很重要)。
我需要一种解决方案,它可以帮助我在不使用双重标记的情况下加载模板。
最佳答案
在你的模板中,确保你有类似的东西
<?php echo $header ?>
<div id="content">My content</div>
<?php echo $footer ?>
id="content"
是唯一的,仅存在于您的 $header 或 $footer 中。
关于javascript - AJAX动态页面更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37944004/