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

Как решить проблему в ajax?

Есть такой чат:
<div class="chat">
                                    <div class="chat-title">Чат</div>
                                    <div class="chat-block">
                                        <?php foreach ($coments as $com) {
                                            $uss = User::find()->where(['id' => $com->user_id])->one();
                                            ?>
                                            <div class="com-box">
                                                <div class="sizik-com"></div>
                                                <div class="com-name"><?= $uss->username ?></div>
                                                <div class="com-text"><?= $com->text; ?></div>
                                            </div>

                                        <?php } ?>
                                    </div>
                                    <div class="coments-block">
                                        <?php $form = ActiveForm::begin(); ?>
                                        <?= $form->field($coment, 'text')->textarea(['class' => 'com-inp', 'name' => 'coment', 'row' => 4, 'placeholder' => 'Оставьте комментарии...'])->label('', ['class' => 'com-title']); ?>
                                            <button type="submit" class="btn-all2 btn-jiber"><img class="send-img" src="/img/send.png" alt=""></button>
                                        <?php ActiveForm::end(); ?>
                                    </div>
                                </div>


здесь в форме через ajax отправляю в контроллер

$('form').on('beforeSubmit', function(){
    var data = $(this).serialize();
    $.ajax({
        url: '/site/index',
        type: 'POST',
        data: data,
        success: function(res){
            console.log(res);
        },
        error: function(){
            alert('Error!');
        }
    });
    return false;
});


и в контроллере:
public function actionIndex()
    {
		if(Yii::$app->user->isGuest){
			return $this->redirect(['login']);
		}
        $coment = new Coment();
        $com = $_POST['coment'];
        $coment->text = $com;
        $coment->user_id = Yii::$app->user->id;
        $coment->save();

            $coments = Coment::find()->orderBy(['id' => SORT_DESC])->all();
        $veb = Vebinar::find()->one();
        $this->layout = '@app/views/layouts/main2.php';
        return $this->render('index', [
            'veb' => $veb,
            'coment'=>$coment,
            'coments'=>$coments,
        ]);
    }


Вот я отправлю чрез ajax в site/index и там сохраняется в базу. Вопрос как мне $coments выводить теперь в index без обновлении? Сейчас только после перезагрузки страницы выводиться новые комментарии, мне бы хотелось сразу после отправки коммент выводился без перезагрузки страницы. Ну наверное поняли, у меня сейчас через форму без перезагрузки сохраняются в базу, но не знаю теперь как перезагрузки этих же коммент выводить на том же странице, помогите
  • Вопрос задан
  • 67 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@maksim_fix
Junior PHP developer
На стороне сервера возвращайте только что созданную запись(естественно в формате json), далее в этом блоке
success: function(res){
              //манипуляции с данными
        },

добавляете на ваш сайт только что созданную запись(можно через .append()
Ответ написан
Ваш ответ на вопрос

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

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