Yii2 ajax визуализирует изображение после вызова

#php #jquery #ajax #yii2

#php #jquery #ajax #yii2

Вопрос:

Итак, в основном у меня есть контроллер, который обрабатывает файлы (изображения и видео), а в представлении «просмотр» у меня есть кнопка, которая называется «просмотр содержимого». Эта кнопка использует контроллер actionContent($id) , и я хочу, чтобы при нажатии она запускала вызов AJAX для действия и рендеринга на странице в div изображении, которое находится в модели id == $id . Как я могу обработать запрос AJAX и вернуть изображение, отображаемое в div ?

 public function actionContent($id)
    {
        $model = $this->findModel($id);
        switch (substr($model->mime, 0, strpos($model->mime, '/'))) {
            case 'image' :
                return $this->renderAjax('_image', [
                    'img' => $model->getFullPath(),
                ]);
                break;
            default:
                break;
        }
    }
  

И представление:

  <span class="pull-right">
            <?= Html::a('View Content', ['content', 'id' => $model->id], [
                'class' => 'btn btn-default',
                'id' => 'content'
            ]); ?>
        </span>
  

С помощью скрипта, который я уже пробовал:

  $(document).ready(function () {
        $('#content').click(function () {
            $(this).preventDefault();
            $.ajax({
                type: "GET",
                url: $(this).href,
                contentType: "<?= $model->mime?>",
                success: function (response) {
                    ('.show-content').html('<img src="data:image/png;base64,'   response   '" />');
                }
            })
        })
    })
  

Комментарии:

1. Вы имеете в виду event.preventDefault() , нет $(this).preventDefault() , добавить event в качестве параметра в обработчик щелчков (функция). Ваш скрипт выглядит в целом нормально, должен выполнить запрос GET на сервер хотя бы один раз.

2. что возвращается из представления _image ?, показать содержимое файла

3. и в чем заключается текущая проблема, с которой вы столкнулись?

4. извини за задержку на мой ответ, был занят с уни… ` <?php /* @var $img string */ ?> <img src=»<?= $img ?>» alt=»»> ` это страница, я просто хочу сделать это без перезагрузки страницы, таким образом с помощью AJAX, казалось хорошим способом сделать это. На самом деле не знаю, правильно ли это сделать.