onclick替换php包含的文件

时间:2011-10-01 06:23:43

标签: php replace include onclick

我不确定我想做的事情是否可能,但现在是。

我有一个标题,在标题内部是一个php include for“login.php”

On“login.php”是一个将用户带到“forgot.php”的链接。

我想做的是,而不是用户被“忘记.php”只是用“login.php”刷新页面包含替换为“forgot.php”或做某种内容切换out,有点像使用iframe。

我不想将用户带到新页面,我只想切换标题内显示的内容。

感谢您提供的任何帮助,感谢代码示例。

4 个答案:

答案 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调用并插入必要的元素。这会产生明显的停顿。