Кирилл Арутюнов Примеры я смотрел, там данные вводятся через field поэтому и написал сюда. А вот это возможно поможет, хотя не много не уверен : name="Bid[servicesIds][]"
Сейчас у меня name="Bid[n][servicesIds]" n поставил потому что Bid[][servicesIds] и Bid[][name] считывает как Bid[0][servicesIds] и Bid[1][name]
Алексей Уколов: Спасибо, если так сделать, в контроллере данные в модель попадут без каких либо доп. действий ? и отдельно будет массив $foo (в данном случае) ?
Кирилл Арутюнов если так указать то происходит ошибка ... хотя в контроллере указываю что отправляю json. По сути все работает, хочу просто разобраться почему отправляю json, а получаю не json
Максим Тимофеев В ответ я получаю error (в нем alert)
Вот это срабатывает без проблем :
$.ajax({
url: '" . Url::to(['typecost']) . "',
type: 'POST',
dataType: 'json',
success: function(data) {
alert(data.typeArr);
},
});
public function actionTypecost() {
if (Yii::$app->request->isAjax) {
$type = Typecostauto::find()->all();
$typeArr = ArrayHelper::map($type, 'id', 'Type');
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return [
'typeArr' => $typeArr,
];
}
}
Но так не работает :
$.ajax({
url: '" . Url::to(['submitmodal']) . "',
type: 'POST',
data: form.serialize(),
dataType: 'json', //если это убрать то работает
success: function (result) {
setTimeout(function() { $('#my-modal').modal('hide');}, 500);
var id = result.id;
var type = result.type;
alert(id+' '+type);
},
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];
}
}
}
Максим Тимофеев В данном случае на renderPartial не нужно обращать внимание, потому что данные отправляются вот здесь
if ($model->save()) {
return ['id' => $model->id, 'type' => $model->Type];
}
Здесь не нужен ни какой render, просто отправить 2 значения. Этот render нужен на всякий случай, вдруг ошибка, чтобы заново подгрузил модальное окно.
Максим Тимофеев: Пробовал через pjax, форма все время обновлялась, ничего не мог с этим поделать ... Подошел 2 и 3 способ, их скомбинировал и получил желаемый результат ... Спасибо
Максим Тимофеев Спасибо за развернутый ответ, попробовал первым способом, вроде получилось, страница изменяется, но БД не пишет запись, которая была создана динамически. В хроме "посмотреть код страницы" ничего не меняется после выполнения запроса, а "посмотреть код" видно что добавляется элемент. В чем может быть проблема ?
И еще вопрос, как можно изменять полученный html? Дело в том, что я получаю страницу заново и просто перезаписываю ее в div body. Получается вся форма обновляется, а мне этого не нужно.
polar-bear: Дак так то оно так, я ж написал, что работает, но если страницу перезагрузить, иначе не работает, так же и добавление (после удаления) надо опять же перезагружать страницу ...