palkan_karabov
@palkan_karabov
PressF1

Как инициализировать Pjax в Yii2?

Подгружается в модальную форму данные по Ajax:
$('[firmmodal]').on('click',function(){
		console.log('s');
		$.ajax({
			type: 'GET',
			url: '/firm/update/',
			data: {
				id: $(this).attr('firmmodal')
			},
			success: function(data){
				$('#firmModalUpdate').html(data);
			}
		})
	})

Вот эти:
<?php Pjax::begin(['enablePushState' => false, 'id' => 'firmUpdate']); ?>
	    <?php $form = ActiveForm::begin(['options' => ['data-pjax' => true]]); ?>
.......
<?= Html::submitButton($model->isNewRecord ? 'Создать' : 'Обновить', ['class' => 'uk-button uk-button-primary', 'data-pjax' => '1']) ?>
		<?php ActiveForm::end(); ?>
	<?php Pjax::end(); ?>

При отправки формы страница перезагружается. Грешу на то, что Pjax при загрузки через Ajax не инициализируется, и соответственно не отправляется.
Вот контроллер:
public function actionUpdate($id = false)
    {
    	if($id){
			$model = $this->findModel($id);
		}else{
			$model = new Firm();
		}
		$this->layout = false;
		$model->_save = false;
		if ($model->load(Yii::$app->request->post()) && $model->save()) {
			$model->_save = true;
		}
		return $this->render('update', [
            'model' => $model,
        ]);
    }
  • Вопрос задан
  • 528 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Mi7teR
Senior Jquery engineer
www.yiiframework.com/doc-2.0/yii-widgets-pjaxasset.html
asset на странице, куда pjax подключается, присутствует?
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Не понимаю зачем тут ajax. Разве через тот же pjax нельзя это сделать?
Но я бы проверил, куда стучится pjax запрос и нет ли там ошибки, так же увеличил бы timeout, если pjax не получает в течении timeout (1000ms) ответ, кидает обычный get. Может быть дело в этом. Поставьте для проверки:
Pjax::begin([
'timeout'=>60000
])
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы