@Monitorkin

Как получить данные JSON в Yii2 из view?

Не могу заставить работать скрипт в Yii2 для получения json данных из базы данных.
есть файл /modules/maps/views/object/objectsjson.php (упростил.., вообще данные берутся из базы):
echo '{
    "type": "FeatureCollection",
    "features": [
        {"type": "Feature", "id": 0, "geometry": {"type": "Point", "coordinates": [55.831903, 37.411961]}, "properties": {"balloonContent": "Содержимое балуна", "clusterCaption": "Еще одна метка", "hintContent": "Текст подсказки"}},
        {"type": "Feature", "id": 1, "geometry": {"type": "Point", "coordinates": [55.763338, 37.565466]}, "properties": {"balloonContent": "Содержимое балуна", "clusterCaption": "Еще одна метка", "hintContent": "Текст подсказки"}}
        ]
}';

и есть яваскрипт который обращается к этому файлу (пример взят отсюда):
ymaps.ready(init);
function init () {
    var myMap = new ymaps.Map('map', {
            center: [сenter1,сenter2],
            zoom: 1,
			type: 'yandex#satellite'
        }),
        objectManager = new ymaps.ObjectManager({
            clusterize: true,
            gridSize: 32
        });
myMap.geoObjects.add(objectManager);
    $.ajax({
        url: "http://site.ru/basic/web/index.php?r=maps%2Fobject%2Fobjectsjson"
    }).done(function(data) {
        objectManager.add(data);
    });

}


на выходе пусто.. но если этот файл положить в папку web и прописать
$.ajax({
        url: "objectsjson.php"
    }).done(function(data) {
        objectManager.add(data);
    });

то всё работает!
Где ошибка? Заранее спасибо.
  • Вопрос задан
  • 4017 просмотров
Пригласить эксперта
Ответы на вопрос 1
arutyunov
@arutyunov
Mooza.ru — Делаем сайты
dataType: 'json' в js указать (в ajax)

В экшене указать формат json:
Yii::$app->response->format = Response::FORMAT_JSON;


И почему у вас view отдает json, если данные из базы можно поместить в массив, а массив отдать как json? Вы просто указываете формат данных как JSON в экшене и делаете return $array;

public function actionMessage()
    {
        // Получение данных из модели, действия с данными
        // ...

        Yii::$app->response->format = Response::FORMAT_JSON;
        return [
            'status' => 'success',
            'message' => $model
        ];
    }


В результате код вернет JSON.
Ответ написан
Ваш ответ на вопрос

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

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