Я часами пытался заставить это работать.У меня есть тег <div id=""data_friends>
и hidden input field
, которые я хочу обновить с помощью AJAX.Тег div
выглядит следующим образом:
<div class="friends-tab-list" id="data_friends">
<?php
//Default query limits results to 8
$sql = ("SELECT * FROM users WHERE FIND_IN_SET(?, friend_array) > 0 LIMIT 0,8");
$query = mysqli_prepare($con, $sql);
$query->bind_param('s', $username);
$query->execute();
$result = $query->get_result();
$num_rows = $result->num_rows;
while ($row = $result->fetch_assoc()) {
$row['profile_pic'];
$row['username'];
echo "<a class='profile-img-item' href='" . $row['username'] . "'>
<img src='" . $row['profile_pic'] . "' title='" . $row['username'] . "'>
</a>";
}
$query->close();
?>
</div>
Скрытый ввод выглядит следующим образом: <input id='max' type='hidden' value='<?php echo $num_rows; ?>'>
Я нажимаю кнопку «Просмотреть больше друзей» и отправляю данные на includes/handlers/ajax_load_profile_friends.php
используя следующее:
$.ajax({
url:'includes/handlers/ajax_load_profile_friends.php',
type:'POST',
dataType: 'json',
data:{'username':username, 'num_friends':num_friends, 'counter':counter},
success: function(data) {
$('#data_friends').html(data.html);
$('#max').val(data.num_rows);
}
});
Данные, поступающие из ajax_load_profile_friends.php, выглядят так:
$query = mysqli_prepare($con,"SELECT * FROM users WHERE FIND_IN_SET(?, friend_array) LIMIT $counter");
$query->bind_param('s', $username);
$query->execute();
$result = $query->get_result();
$num_rows = $result->num_rows;
}
while ($row = $result->fetch_assoc()) {
$row['profile_pic'];
$row['username'];
$html = "<a class='profile-img-item' href='" . $row['username'] . "'>
<img src='" . $row['profile_pic'] . "' title='" . $row['username'] . "'>
</a>";
}
echo json_encode(array('num_rows' => $num_rows, 'html' => $html));
Когда я запускаю это, я получаю единственное возвращение в моем, когда япредположим, чтобы получить возврат 16 записей с каждым кликом, который я думал, делая это в моей функции успеха $('#data_friends').html(data.html);

Значение в моем скрытом поле ввода <input id='max' type='hidden' value='<?php echo $num_rows; ?>'>
не обновляется с помощью этого $('#max').val(data.num_rows);
Есть ли что-то, чего мне не хватает в ajax_load_profile_friends.php
, что вызывает такое поведение?
** Имейте в виду, что я могу заставить это работать, когда я не использую json_encode
и напишите функцию успеха, подобную этой $('#data_friends').html(data.html);
, и удалите dataType: 'json',
из AJAX.Проблема здесь в том, что в обоих случаях я не могу обновить скрытое значение ввода.Я решил, что попробую и исправлю этот метод, поскольку в большинстве примеров json_encode()
указан как способ возврата данных.