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']; } ?>
// сценарий ajax, который устанавливает mainView
<?php session_start(); $_SESSION['mainView']='views/'.$_GET['mainView'].'.php'; ?>
ссылка на javascript для ajax
ajaxURL='ajax.php?mainView=otherDasboard';
вы также можете проверить пустую переменную сеанса и что файл существует до его установки