Задать вопрос
serg_small_developer
@serg_small_developer
Начинающий прогер

Почему не выводит view?

Всем привет, уже не знаю как это сделать), вообщем делаю ajax вот так
$this->registerJs("
	$('.send').on('click', function() {
		if($(\"textarea[name='textarea']\").val()){
			$.ajax({
				type: 'POST',
				url: 'time-checker/complete-comment/',
				data: {
					val: $(\"textarea[name='textarea']\").val()
				}
			});
		} else {
			$(\"textarea[name='textarea']\").css({'border-color':'#d8512d'});
			setTimeout(function(){
				$(\"textarea[name='textarea']\").css({'border-color':'rgba(222, 222, 222, 1)'}); 
			},1000);
		}		
		$('.btn-outline, .close').on('click', function() {
			location.reload();
		});
	});
");

контроллер такой
public function actionCompleteComment()
    {		 
		if (Yii::$app->request->isAjax) {
			$data["time"] = UserTimeReport::find()->where(['user_id'=>Yii::$app->user->id, 'date'=>Yii::$app->params['dateToday']])->asArray()->one();
			$fst = time() - $data["time"]["start"];
			$new_time_work = $fst - $data["time"]["pause"];
			$model = UserTimeReport::findOne([
				'user_id'=>Yii::$app->user->id,
				'date'=>Yii::$app->params['dateToday']
			]);
			$model->end = time();
			$model->work = $new_time_work;			
			$model->comment = $_POST['val'];
			$model->update();  

			$data["st"] = date("H:i:s", $data["time"]["start"]);
			$data["ed"] = date("H:i:s", $model->end);

			return $this->renderAjax('modal', ['data' => $data]);
        } else {
			throw new ForbiddenHttpException('что-то не так');
        }
    }

тут все срабатывает кроме этого
return $this->renderAjax('modal', ['data' => $data]);

т.е. он изменяет данные в базе все как нужно, но view modal показывать не хочет, уже пробовал все что только нашел, но ничего не помогает.

p.s.
Код modal
<div class="modal modal-success" id="modal-success" style="display: none; padding-right: 17px;">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                  <span aria-hidden="true">×</span></button>
                <h4 class="modal-title">Вы завершили рабочий день!</h4>
              </div>
              <div class="modal-body">
                <table class="table">
          <thead>
            <tr>
              <th>Старт</th>
              <th>Пауза</th>
              <th>Завершил</th>
              <th>Работа</th>
              <th width="50">
              </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td><?= $data["st"]?></td>
              <td><?= $data["ps"]?></td>
              <td><?= $data["ed"]?></td>
              <td><?= $data["wk"]?></td>
            </tr>
          </tbody>
        </table>
              </div>
              <div class="modal-footer">
                <button type="button" class="btn btn-outline" data-dismiss="modal">Close</button>
              </div>
            </div>
            <!-- /.modal-content -->
          </div>
          <!-- /.modal-dialog -->
        </div>
    <?php
    $this->registerJs("
      $('#modal-success').modal('show');
      $('.btn-outline, .close').on('click', function() {
        location.reload();
      });
    ");
    ?>

  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой 9 комментариев
Пригласить эксперта
Ответы на вопрос 2
fornit1917
@fornit1917
Вы делаете ajax-запрос и никак не обрабатываете ответ от сервера. Сервер вам возвращает html который вы отрендерили, но вам нужно на js в обработчике ajax-запроса написать код, который будет его показывать.
Ответ написан
@evgen9586
Backend-dev. Лублу Enterprise и не люблю понты)
А где обработка ответа от сервера?
$.ajax({
success: function (res) {
                   туть обработка при успехе
                },
                error: function () {
                   туть обработка при ошибке
                }
})
Ответ написан
Ваш ответ на вопрос

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

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