Когда пользователь нажимает на кнопку «Занести балл», необходимо выполнить следующие действия:
- Получение значения из поля «balls»:
- Получить значение из поля ввода с именем «balls» на странице.
- Это можно сделать с помощью JavaScript, используя селектор
$('input[name="balls"]')
.
- Отправка AJAX-запроса на сервер:
- Отправить AJAX-запрос на сервер, передав в нем значение «balls» и необходимые идентификаторы (например,
id_reestrzayvkistependiy
). - Для этого можно использовать jQuery или встроенный в Yii2 AJAX-функционал.
- Отправить AJAX-запрос на сервер, передав в нем значение «balls» и необходимые идентификаторы (например,
- Обработка AJAX-запроса на сервере:
- На сервере, в контроллере, обработать AJAX-запрос и сохранить переданное значение «balls» в базе данных.
- Для этого можно использовать действие
actionAdd()
, как было показано ранее.
- Обновление страницы или отображение сообщения об успешном сохранении:
- После успешного сохранения данных на сервере, можно либо обновить страницу, чтобы отобразить новое значение «balls», либо показать пользователю сообщение об успешном сохранении.
Вот пример реализации этого процесса с использованием jQuery:
javascript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $(document).ready(function() { $('.btn-score').click(function() { var id_reestrzayvkistependiy = $(this).data('id'); var balls = $(this).closest('.card-panel').find('input[name="balls"]').val(); $.ajax({ url: '<?= Url::to(['reestrzayvkistependiy/add']) ?>', type: 'POST', data: { 'id_reestrzayvkistependiy': id_reestrzayvkistependiy, 'balls': balls, '<?= Yii::$app->request->csrfParam ?>': '<?= Yii::$app->request->csrfToken ?>' }, success: function(data) { // Обновление страницы или отображение сообщения об успешном сохранении location.reload(); }, error: function(xhr, status, error) { // Обработка ошибки alert('Ошибка при сохранении балла: ' + error); } }); }); }); |
В этом коде мы получаем значение «balls» из поля ввода, отправляем AJAX-запрос на сервер, и после успешного сохранения обновляем страницу, чтобы отобразить новое значение. Если возникает ошибка, мы показываем сообщение об ошибке.
Да, можно изменить значение в поле с именем «balls» без использования AJAX-запроса. Вот как это можно сделать:
javascript
1 2 3 4 5 6 | $(document).ready(function() { $('.btn-score').click(function() { var ballsValue = $(this).closest('.card-panel').find('b:contains("Балл:")').text().split(':')[1].trim(); $(this).closest('.card-panel').find('input[name="balls"]').val(ballsValue); }); }); |
В этом коде мы используем jQuery, чтобы найти элемент, содержащий текст «Балл:», извлечь значение после двоеточия и установить его в поле ввода с именем «balls». Таким образом, при нажатии на кнопку «Занести балл», значение <?= $rz->portfolio->activework->balls ?>
будет автоматически перенесено в поле ввода, без необходимости отправки AJAX-запроса. Это более простой подход, который позволяет избежать лишней сетевой активности и сразу обновить значение на странице.