Задать вопрос
@Leffken
Студент, как студент!

Почему данные от сервера приходят не в формате json?

Всем привет.
Отправляю данные модальной формы на сервер таким образом :
$('body').on('submit', '.modal-form', function (e) {
        e.preventDefault();
        var form = $(this);
        $.ajax({
            url: '" . Url::to(['submitmodal']) . "',
            type: 'POST',
            data: form.serialize(),
            success: function (result) {
                setTimeout(function() { $('#my-modal').modal('hide');}, 500);
                var id = result.id;
                var type = result.type;
                $('#dropDownList-types').append('<option value='+id+'>'+type+'</option>');
            },
            error: function () {
                alert('error in ajax modal submit');
            }
        });
    });

Контроллер
public function actionSubmitmodal() 
    {
        $model = new Typecostauto();
        Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
        if ($model->load(Yii::$app->request->post())) {
            if ($model->save()) {
                return ['id' => $model->id, 'type' => $model->Type];
            }
            else 
                return ['id' => 'fail'];
        }
        else 
        return $this->renderPartial('modal', [
            'model' => $model,
        ]);
    }

В контроллере я указал что хочу отправить данные JSON, а если dataType: 'json' то ничего не работает.
  • Вопрос задан
  • 423 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
1. Почему renderPartial, а не renderAjax?
2. Что бы засунуть Ваш рендер в json, надо сделать так:
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$myvar = $this->renderAjax('modal', [
            'model' => $model,
        ]);
return yii\helpers\Json::encode($myvar);

и смотреть debug на наличие ошибок, если не сработает
Ответ написан
arutyunov
@arutyunov
Mooza.ru — Делаем сайты
Внутри $.ajax укажите dataType: 'json'
Ответ написан
Ваш ответ на вопрос

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

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