PHP:
<?php
$mainView = "views/dashboardView.php";
?>
的HTML:
<div class="mainContent">
<?php include($mainView); ?>
</div>
我想要一个按钮的点击事件来改变 .mainContent 显示的视图,我相信 AJAX 可以实现这一点,但还不能让它工作。
有什么建议吗?
您必须修改您的 PHP 脚本以允许这样做。
例如:
PHP:
if (isset($_POST['change']))
{
$mainView = $_POST['change'];
echo $mainView;
}
HTML 和 jQuery:
<button id="change">Change the var</button>
<script>
$("#change").click(function() {
$.post("file.php", {change: $(this).val()},
function (data)
{
$("#mainContent").html(data);
});
});
</script>
<script type="text/javascript>
function changePage(pageDest){
var xmlobject = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xmlobject.onreadystatechange = function (){
if(xmlobject.readyState == 4 && xmlobject.status == 200){
document.getElementById("mainContent").innerHTML = xmlobject.responseText;
}
else{
document.getElementById("mainContent").innerHTML = 'Loading...';
}
}
xmlobject.open("GET",pageDest,true);
xmlobject.send();
}
</script>
<div class="mainContent" id="mainContent">
Change this HTML
</div>
<div onmouseup="changePage('views/dashboardView.php')">Get dashboard view</div>
changePage 函数中的参数是您希望放置在 mainContent 中的页面的位置<div>
这有帮助吗?
您无法更改 PHP 变量的值,因为 PHP 是服务器端(首先完成),而 JS 是客户端(在服务器端之后完成)。
通常 AJAX 用于重新填充网页的某个区域,但这将适合您的目的。在下面的示例中,ajax/test.php
是您要包含的新文件。显然根据需要更改路径/名称,然后创建该文件。
不过,我要补充一点,如果您要重新填充页面的很大一部分,则完全重新加载它可能会一样快。
$(function(){
$('.your-button-class').on('click', function(){
$.post('ajax/test.php', function(data) {
$('.mainContent').html(data);
});
});
});
将视图存储在会话中,将保持站点显示此视图,直到用户关闭浏览器并结束会话、会话到期或他们再次更改视图。
设置 mainView 的包含
<?php
session_start();
$mainView = "views/dashboardView.php"; // default
if(isset($_SESSION['mainView']))
{
$mainView =$_SESSION['mainView'];
}
?>
// 设置 mainView 的 ajax 脚本
<?php
session_start();
$_SESSION['mainView']='views/'.$_GET['mainView'].'.php';
?>
ajax 的 javascript 链接
ajaxURL='ajax.php?mainView=otherDasboard';
您可能还想在设置之前检查空会话变量以及文件是否存在