Доброго времени суток уважаемые программисты. Не могу понять каким образом можно получить от сервера только часть html а не всю страницу чтобы потом обновить innerHTML. Вам скорее всего будет не интересно читать споллер с низу. Мне просто нужно сгенерировать кусок html кода для клиента, но в итоге получается полная страницы с DOCTYPOM(
сначала я перенаправляю .htaccess в каталог public/index.php
AddDefaultCharset utf-8
RewriteEngine On
RewriteRule .* public/$1
в самом каталоге public
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php
В итоге я могу получить доступ к файлам только в public, но не app
в каталоге controllers/route.php у меня подключаються файлы в зависимости от url например news_controller.php который затем генерирует шаблон
на клиенте
(function()
{
function idN(idN)
{
return document.getElementById(idN);
}
function ajax(method, request)
{
var xhr = new XMLHttpRequest();
xhr.open(method, request, true);
xhr.onreadystatechange = function()
{
if(xhr.readyState === 4)
{
if(xhr.status === 200)
{
console.log(xhr.responseText);
for(var n = 0; document.querySelectorAll('ul li a').length > n; n++)
{
document.querySelectorAll('ul li a')[n].onclick = function()
{
spa(this.href);
ajax('POST', '/app/controllers/route.php?controller=' + this.href);
return false;
}
}
}
else console.log(xhr.status + ' ' + xhr.statusText);
}
}
xhr.send(null);
}
function spa(links)
{
history.pushState(null, null, links);
}
window.onpopstate = function()
{
ajax('POST', '/app/controllers/route.php?controller=' + location.href);
}
ajax('POST', '/app/controllers/route.php?controller=' + location.href);
}());
<?php
$views =
[
'header',
'profile_header',
'content',
'footer'
];<code lang="php">
<code lang="php">
<?php
$controller = clean_str($_SERVER['REQUEST_URI']);
$controller = explode('/', rtrim($controller, '/'));
function get_controller($controller)
{
if(empty($controller[0]) && empty($controller[1]))
{
if(logedin()) $controller = 'news';
else $controller = 'login';
}
else if(empty($controller[0]) && !empty($controller[1]) && empty($controller[2]))
{
if(logedin())
{
if($controller[1] === 'id'.user_id()) $controller = 'id';
else $controller = $controller[1];
}
else $controller = 'login';
}
else
{
header("HTTP/1.0 404 Not Found");
exit;
}
return $controller;
}
$controller = get_controller($controller);
require_once $controller . '_controller.php';
</code>
У меня есть такая структура:
app
--config
---config.php
--model
---model.php
--views
---ui
----header.php
----footer.php
---index.php
--controllers
---route.php
---news_controller.php
--helper
---helper.php
--bootstrap.php
public
--css
--js
--fonts
--icons
--images
--index.php
--.htaccess
.htaccess