Задать вопрос
@yura_born

Как обновить таблицу после дабавления записи ajax -ом?

На странице выводится таблица с данными и есть кнопка добавить, при клике по кнопке появляется форма куда вводятся данные вот код из view

<div class="modal fade" id="rankModalWrp" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="exampleModalLabel">Rank сотрудника</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <div class="sotrudnikRankViewWrp" id="tRankWrp">
                    <table class="table table-striped table-bordered detail-view">
                        <tbody>
                        <tr>
                            <th>Дата с</th>
                            <th>Дата по</th>
                            <th>Rank</th>
                        </tr>

                        <?php
                        foreach ($modelSotrRank as $sotrRankRow){ ?>
                            <tr>
                                <td><?php echo $sotrRankRow['date_start'] ?: 'Не задано'?></td>
                                <td><?php echo $sotrRankRow['date_end'] ?: 'Не задано'?></td>
                                <td><?php echo $sotrRankRow['rank'] ?: 'Не задано'?></td>
                            </tr>
                        <?php }
                        ?>
                        </tbody>
                    </table>
                </div>

                <button type="button" class="btn btn-success" id="addRankSotrMain">Добавить</button>

                <div id="formAddRankWrp" class="formAddRankWrp">
                    <form id="formAddRank">
                        <div class="form-group">
                            <label for="code">Дата с </label>
                            <input type="date" name="date_start" id="date_start" />
                        </div>
                        <div class="form-group">
                            <label for="code">Дата по </label>
                            <input type="date" name="date_end" id="date_end" />
                        </div>
                        <div class="form-group">
                            <label for="code">Rank </label>
                            <select name="ranklist" id="ranklist">
                                <?php
                                foreach ($modelRankList as $rank){
                                    echo '<option value='.$rank['id'].'>'.$rank['rank'].'</option>';
                                }
                                ?>
                            </select>
                        </div>
                        <button type="submit" class="btn btn-success" id="addRankSotrTarget">Добавить</button>
                    </form>
                </div>

            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">Закрыть</button>
                <button type="button" class="btn btn-primary">Сохранить</button>
            </div>
        </div>
    </div>
</div>

<?php
$idSotrudnik = $model[0]["code"];

$jsAddRank = <<<JS
    $('#formAddRank').submit(function () {
        var id = '$idSotrudnik'
        
        // var data = $(this).serializeArray();
        // console.log(id);
    
    $.ajax({
    url: 'index.php?r=sotrudniki/addranksotr',
    type: 'get',
    data: $(this).serialize()+'&id='+ id,
    success: function(res){
        $('#tRankWrp').html(res);
     },
    error: function () {
    console.log("ERROR");
    }
    });
    return false;
    });
JS;

$this->registerJs($jsAddRank);


вот контроллер в который передается

public function actionAddranksotr()
    {
        if(\Yii::$app->request->isAjax){
            $id = $_GET['id'];
            if (!empty($_GET['date_start'])){
                $date_start = $_GET['date_start'];
            }
            else {
                $date_start = 'null';
            }

            if (!empty($_GET['date_start'])){
                $date_end = $_GET['date_end'];
            }
            else {
                $date_end = 'null';
            }

            if (!empty($_GET['ranklist'])){
                $rank_code = $_GET['ranklist'];
            }
            else {
                $rank_code = '';
            }

            $connection = Yii::$app->db;
            $connection->createCommand()->insert('sotr_rank',['sotr_code'=>$id, 'date_start'=>$date_start, 'date_end'=>$date_end, 'rank_code'=>$rank_code])->execute();
        }
 }


Данные в БД добавляются, все ок! Но таблица не обновляется на странице. Как сделать что бы при добавлении новой записи таблица обновлялась и я видел в ней новую запись?
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Простой 12 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы