Это довольно просто, вы можете сделать HTML прямо там, где находится ваш первоначальный цикл, вам нужна оболочка.jQuery позволяет вам просто вставить html напрямую, если это необходимо.
Создайте его как функцию view для повторного использования там, где вам нужно.Функция не будет работать как есть, вам нужно будет ввести $tmp
или все, что вам нужно, но концепция требует этого как функции.
/ functions / myfunction.php
<?php
function myfunction($user_foreach_limit = 1)
{
# I would check if the value is a number first
if(!is_numeric($user_foreach_limit))
$user_foreach_limit = 1;
# Do your loop stuffs
foreach ($modules_for_from as $m_foreach_as) {
if ($tmp++ < $user_foreach_limit) {
// foreach content
}
}
}
Добавьте пару скрытых полей только для того, чтобы сделать несколько маркеров идентификации запроса.
/ original-page.php
<form method='POST' id='form_show_more' action="form_show_more.php">
<input type="hidden" name="action" value="get_more_mods" />
<input type="hidden" name="increment" value="2" />
<input type='submit' value='Show more'/>
</form>
<!-- create a wrapper so you can use it to drop the updated html into -->
<div id="table-list">
<?php
# Add the view function
include_once(__DIR__.'/functions/myfunction.php');
# Run the function right on load for incremental 1, ajax will replace this content
myfunction(1);
?>
</div>
<script>
$('#form_show_more').on('submit', function(event){
event.preventDefault();
$.ajax({
// You can get the destination from the form
url: $('#form_show_more').attr("action"),
type: 'POST',
data: $('#form_show_more').serialize(),
success: function(response) {
$('#table-list').html(response);
}
});
});
</script>
Ничего не предпринимать, если отправляется неверный запрос.
/ form_show_more.php
<?php
# Stop if action not sent
if(empty($_POST['action']))
die("Invalid request.");
# Stop if the action is not correct
elseif($_POST['action'] != 'form_show_more')
die("Invalid action.");
# Add the view function
include_once(__DIR__.'/functions/myfunction.php');
myfunction($_POST['increment']);
exit;
?>