我不确定我想做的事情是否可能,但现在是。
我有一个标题,在标题内部是一个php include for“login.php”
On“login.php”是一个将用户带到“forgot.php”的链接。
我想做的是,而不是用户被“忘记.php”只是用“login.php”刷新页面包含替换为“forgot.php”或做某种内容切换out,有点像使用iframe。
我不想将用户带到新页面,我只想切换标题内显示的内容。
感谢您提供的任何帮助,感谢代码示例。
答案 0 :(得分:7)
如果您尝试在不重新加载页面的情况下完成此操作,则需要使用AJAX。
如果您想保留login.php,您可以执行以下操作:
<a href="login.php?p=forgot">link</a>
用php之类的东西
<?
if ( isset($_GET['p']) && $_GET['p']=="forgot") {
include('forgot.php');
} else {
include('login.php');
}
答案 1 :(得分:1)
在用户浏览器中显示页面之前,PHP已完整解析,因此,JavaScript(客户端语言)中的onclick()
或onsubmit()
等内容不可用用PHP。
可能会有一些解决方案:
1)使用AJAX向服务器提交查询,并将页面上的HTML内容替换为结果。
2)正如您所提到的,请使用iFrame。
3)在<div>
页面上隐藏login.php
,其中包含forgot.php
的HTML,并使用简单的JavaScript onclick()
方法交换页面内容。在这种情况下,两个“页面”实际上都在login.php
的同一个文件中。
答案 2 :(得分:0)
您无法从javascript更改include语句,因为在您在浏览器中看到您的页面时,脚本已经执行。
使用ajax动态更改页面内容而不刷新。 如果您使用的是jquery,代码将非常简单:
<script type="text/javascript">
$(document).ready(function() {
$('#link').click(function() {
$.get('script.php', function(data) {
$('#divOfContainer').html(data);
});
});
});
</script>
<div id="divOfContainer"><!-- the content to be fetched with ajax will be put here --></div>
<a href="#" id="link">Link</a>
答案 3 :(得分:0)
我可以想到两件事:
我会做什么,假设你的login.php和forgot.php之间的差异因为你不改变页面而没有太大的不同,就是把html放在html下面的forgot.php下面对于login.php并隐藏login.php html并显示forgot.php内容。
示例:
<div id = "login">
<!-- Login HTML -->
</div>
<div id = "forgot" style = "display:none" >
<!-- forgot password HTML -->
</div>
<input type="button" value="Forgot Password?" onclick="forgot()" />
使用Javascript:
function forgot(){
document.getElementById('login').style.display='none';
document.getElementById('forgot').style.display='block';
}
否则,您可以对页面使用ajax调用并插入必要的元素。这会产生明显的停顿。