#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, казалось хорошим способом сделать это. На самом деле не знаю, правильно ли это сделать.