#php #jquery #json #yii2
#php #jquery #json #yii2
Вопрос:
Я пытаюсь создать или обновить модель в модальном формате, и ответ будет нулевым после Json, и мой модальный код не будет скрыт после действия. сеть показывает это
Ошибка синтаксиса: JSON.parse: неожиданный символ без пробелов после данных JSON в строке 1, столбец 103 данных JSON
ПОСЛЕ {"status":true,"type":"success","title":"¡Excelente!","msj":"Se han guardado los datos correctamente"}null
этого null в конце, что это значит?
Мои действия выглядят следующим образом:
public function run($id = null)
{
if ($id == null) {
$model = new BancosConcepto();
} else {
$model = BancosConcepto::findOne($id);
}
$model->loadDefaultValues();
$show_form = true;
$data = array();
if (Yii::$app->request->isPost) {
$model->load(Yii::$app->request->post());
if($model->save()) {
$show_form = false;
$data['status'] = true;
$data['type'] = 'success';
$data['title'] = '¡Excelente!';
$data['message'] = 'El concepto se registró correctamente.';
}
}
if ($show_form) {
return $this->controller->renderAjax('_form', [
'model' => $model,
]);
} else {
Yii::$app->response->format = Response::FORMAT_JSON;
echo JSON::encode($data);
}
}
Мое представление выглядит следующим образом:
$( document ).on( "click", ".btn-add", function(e) {
url = $(this).attr('href');
$.ajax({
type: "GET",
url: url,
beforeSend: function() {
$("#modal-win .modal-dialog").addClass("modal-sm")
$("#modal-win").modal('show');
},
success: function(data){
$("#modal-win .modal-content").html(data);
}
});
return false;
});
Комментарии:
1. Этого нет в вашем JSON
{...json...}null
, после него выводится что-то другое. Сделайтеexit(JSON::encode($data));
и проверьтеob_get_level()
, чтобы убедиться, что выходные буферы не включены, оно должно быть равно 0. После отправки вашего ответа JSON это должно быть окончанием приложения, поскольку вы можете отправить только один ответ Json. У вас могло быть?>null
в одном из ваших файлов и т.д. Кто знает. PS Я не использую Yii.2. добавьте exit() после «echo JSON::encode($data);»
3. У меня не было никакого null, я создаю новый проект и добавляю эти представления, и сеть говорит то же самое. Можно ли установить версию Json для этого?
4. У меня есть другой проект с yii версии 2.0.11 и он отлично работает, новый проект имеет версию 2.0.14 и порождает эту проблему, есть ответ?
Ответ №1:
Ваше действие должно возвращать ответ, а не повторять его:
if ($show_form) {
return $this->controller->renderAjax('_form', [
'model' => $model,
]);
} else {
return $this->controller->asJson($data);
}