Intereting Posts

Изменение значения переменной PHP с помощью AJAX

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'; 

вы также можете проверить пустую переменную сеанса и что файл существует до его установки