通过AJAX将PHP文件加载到DIV中
假设我有一个通过AJAX将PHP文件加载到DIV中,php,ajax,wrapper,Php,Ajax,Wrapper,假设我有一个index.php,它将page.php加载到类“wrapper”的div”中 phppage.php又有自己的链接,我希望它能够在您单击其中一个链接时,将相应的页面加载到相同的“包装器”div 同样,加载的页面可能有自己的链接,我想继续将内容加载到同一个div中。如何实现页面的这种连锁效应?
index.php
,它将page.php
加载到类“wrapper
”的div
”中
phppage.php
又有自己的链接,我希望它能够在您单击其中一个链接时,将相应的页面加载到相同的“包装器”div
同样,加载的页面可能有自己的链接,我想继续将内容加载到同一个div中。如何实现页面的这种连锁效应?
$('#link').click(function() {
var go = $.ajax({
type: 'POST',
data: {m: 'ajax', // POST Variables go here...
linkID: $(this).val()} // $(this).val() is the value of the link clicked
})
.done(function(results) {
$('#resultsDiv').html(results); // This is where your results go
})
.fail(function(msg) {
alert("Error:" + msg);
})
.always(function() {
});
}
我将把AJAX调用放入一个函数中:
function loadWrapper($url){
$('#wrapper').load($url+' > *',function(){
$(this).on('click','a',function(e){
e.preventDefault();
loadWrapper($(this).attr('href'));
});
});
}
然后在页面加载时,将单击指定给页面上最初加载的任何项目:
$('.LinkClass').on('click',function(e){
e.preventDefault();
loadWrapper($(this).attr('href'));
});
当然,还有您的原始负载:
loadWrapper('page.php');
函数中的回调将允许在加载的链接上触发click事件,以及将来要在.Wrapper
中加载的任何其他链接。只要给那些链接classLinkClass
(或者你想要的任何东西),你就可以开始了。使用jQuery:
var activateLinks = function() {
$('.wrapper a[href]').click(function(){
$('.wrapper').load($(this).attr('href'), activateLinks);
return false;
});
}
$('.wrapper').load('page.php', activateLinks);
否则
$('.wrapper').on('click', 'a[href]', function() {
$('.wrapper').load($(this).attr('href');
return false;
}
$('.wrapper').load('page.php');
使用委托是最好的方式,这样您就不必为新页面上的链接运行处理程序附件。它们是自动处理的
$(document).on('click', 'div.wrapper a[href]', 'click', function (e) {
e.preventDefault();
$.get($(this).attr('href'), function (html) {
$('div.wrapper').html(html);
});
});
您是使用vanilla JS还是像jQuery这样的库来加载AJAX?将page.php
放在
中我使用jQuery……出于安全原因,我不想使用iframe。我需要查看更多代码来给您一个真实的副本/过去的答案,但这是您可以用来检测单击了哪个按钮,加载了哪些内容,以及将结果放在何处。最好在此处使用委托,否则每次加载新内容时都需要运行委托<代码>$(文档)。在('click','div.wrapper a[href]'上,函数(e){/*您的链接处理*/})
是否在现有的$(文档)中包含loadWrapper函数调用。准备好了吗?为了避免混淆,我去掉了包装器,只需将loadWrapper
调用放入现有的ready
函数。编辑:我刚刚注意到你在别人的回答上遇到了同样的问题。您过去是否成功加载了page.php
?它是否在没有AJAX的情况下加载到浏览器中?因为页面本身可能会被破坏。是的,我包括了loadWrapper。此外,page.php本身也可以在浏览器中工作。page.php
与页面index.php
位于同一文件夹中?或者它在子文件夹中?是的。它在同一个文件夹中。我简单地尝试了:$(document).ready(function(){$(“#wrapper”).load(“page.php”);});但是它仍然没有显示page.php。。。。。