Ну а в чём, собственно, проблема? AJAX-запрос для пыхи ничем не отличается от любого другого, возвращайте, что хотите.
вы не поняли я через js отправляю POST запрос на php файл потом php файл генерит html тоесть он типо выводит на интерфейс частичку сайта и я через ajax немогу вернуть весь выведенный html тесть саму страничку пж помогите как?
вот часть кода PHP: <?php $folder_level = 1; $title = "Users List"; $author = "Temurumaru<Tulenov Temur>"; require "../blocks/main.block.php"; if(isset($post['token'])) { if( R::count( "users", "privilege_level = 10 AND token = ?", [ $post['token'] ]) > 0 ) { $limit = 8; $needles = R::count('users'); $n2 = true; if($needles < 1) $n2 = false; $usr_total_pages = ceil($needles / $limit); if($usr_total_pages < 2) $n2 = false; if(isset($get['usr_page'])) { $usr_page = $get['usr_page']; if($usr_page < 1 || $usr_page > $usr_total_pages) {to_page("$MAIN_PATH");} } else { $usr_page = 1; } $users = R::find("users","ORDER BY id DESC LIMIT " . (($usr_page-1)*$limit).', '.$limit); } else { return false; } } else { return false; } foreach ($users as $usr) { if(isset($usr['name'])) $usr_name = "The Name was not set." ?> <hr> <div class="lColumnBlocks col"> <p class="nTitle"> <a href="tools/office_view.php?usr_id=<?php echo $usr['id']; ?>"> <u> <?php echo htmlentities($usr['nick']); ?> </u> </a> <a class="a" style="float: right; margin: 1%;" href="tools/office.php?usr_id=<?php echo $usr['id']; ?>">Edit</a> <a class="a" style="float: right; margin: 1%; color: #fe0000;cursor: pointer;" onclick="clickDeactivate(<?php echo $usr['id']; ?>, '<?php echo htmlentities($usr['nick']);?>')">Deactivate</a> </p> <p class="nDescription"> <?php echo $usr_name; ?> </p> <p class="nDate"> <?php echo htmlentities($usr['email']); ?> </p> <p class="nDate"> <?php echo htmlentities($usr['reg_data']); ?> </p> </div> <?php } ?> <?php if($n2) {?> <hr> <div class="paginator"> <?php if(!($usr_page <= 1)) {?> <a href='<?php echo $MAIN_PATH."/personal.php?usr_page=1";?>'><u>Start</u></a></u> <a href='<?php echo $MAIN_PATH."/personal.php?usr_page=".$usr_page-1;?>'><u><</u></a></u> <?php }?> <!-- --> <?php $st = $usr_page - 3; if($st < 1) $st = 1; $en = $usr_page + 4; if($en > ($usr_total_pages)) $en = $usr_total_pages+1; while ($st != $en) { ?> <a <?php if($usr_page==$st){echo"class='pgn-a'";}?> href='<?php echo $MAIN_PATH."/personal.php?usr_page=".$st;?>'><u><?php echo $st;?></u></a> <?php $st++; } ?> <?php if(!($usr_page >= $usr_total_pages)) {?> <a href='<?php echo $MAIN_PATH."/personal.php?usr_page=".$usr_page+1;?>'><u>></u></a></u> <a href='<?php echo $MAIN_PATH."/personal.php?usr_page=".$usr_total_pages;?>'><u>End</u></a></u> <?php }?> </div> <?php } ?>
как вы видите foreach использует html а не html внутри переменой, вот я и не могу простым return вернуть все выведенное
Откройте уже для себя единую точку входа и отправляйте запрос не «на php файл», а за нужным фрагментом по соотв. адресу. Хотя что мешает делать AJAX-запросы на разные php-файлы с разными GET-параметрами, не понятно. --- Добавлено --- А... кажись, я понял, в чем вопрос. AJAX-запросы можно различать по спец. заголовку. Это если вы отдаете и основной фрагмент, и целиком страницу по одному и тому же адресу. Но вам ничто не мешает разнести обработку обычных и AJAX-запросов по разным адресам. С единой точкой входа это сделать достаточно просто. Но а в вашем случае можно использовать спец. GET-параметр, например /file.php?ajax[=1], или Path-info, например /file.php/ajax --- Добавлено --- Именно с выводом результатов AJAX-запросов проблема? Тогда это к JS. В сети куча примеров. Вообще странно, если вопрос в этом. С этого надо было начинать, а уже потом заниматься обеспечением данных для фронта. Или вы переносите на AJAX старый вариант сайта?
Спасибо за ответ но я мало что понял я начинающий и я эту проблему уже 3 дня не могу найти решение, вот что я имею введу: у меня есть php файл в котором просто: Код (Text): <?php echo "Hello, $_POST['name']!"; ?> и есть js код Код (Text): $.ajax({ url: "tools/user.php", type: "POST", dataType: 'html', data: ({ name: "<?php echo $_SESSION['user'] -> token?>" }), }, success: function(deta) { $(".pUserList").html(data); } }); пж разберитесь эти коды просто пример в чем у меня проблема --- Добавлено --- как вы видите мне нужно вернуть весь выведенный html без return
Зато это не просто. Уверены, что в сессии находится норм. инициализированный объект? Между запросами просто так объекты в сессии не восстанавливаются. И сессия и так хранится на сервере. Зачем что-то передавать на сервер через фронт? Могло устареть и даже быть выпилено. Читайте документацию и см. вашу версию jQuery.
зачем отправлять сессионое значение через клиента, когда система изначально знает о них ? --- Добавлено --- есть шаблон template и есть слой content. При обычном запросе, механизм приложения накладывает на требуемый шаблон, сверху слой контента. При Ajax, идентифицируешь запрос PHP: protected function isAjax(): bool { return $this -> app -> request -> isXmlHttpRequest(); } и далее механизм подгружает и выводит лишь слой контента, без шаблона общего. --- Добавлено --- PHP: <?php declare ( strict_types = 1 ); namespace Nouvu\Resources\Controllers; use Nouvu\Web\Http\Controllers\AbstractController; use Nouvu\Web\View\Repository\CommitRepository; use Nouvu\Resources\System\RestApi; use Nouvu\Web\Component\Database\DatabaseRequestInterface AS Nouvu; final class MainController extends AbstractController { public function err404( string | int $_route ): CommitRepository { $this -> title( [ 'Страница не найдена' ], true ); if ( $this -> isAjax() ) { return $this -> customJson( RestApi :: notFound() -> header( action: 'location', path: $this -> getPathByName( $_route ) ) -> data( message: [ 'Страница не найдена' ] ) ); } return $this -> render( 'error.404', 'error-template' ); } }