Данные не отображаются при успешном запросе ajax - PullRequest
0 голосов
/ 08 февраля 2020

В Laravel у меня есть этот контроллер:

public function getData()
{
    $data = Bencana::all()->pluck('coord');
    return response($data);
}

Это код для загрузки данных из моей базы данных, и мой JS выглядит следующим образом:

$.ajax({
    type : "POST",
    url : '{{ route('getdata') }}',
    headers : {'X-CSRF-TOKEN' : "{{ csrf_token() }}"},
    dataType : 'json',
    success : function(response) {
        // console.log(response);
        var layer = L.geoJson(response, {
            style : myStyle
        }).addTo(map);
    }
});

этот запрос не отображает данные Круга, Точки, Полигона на моей карте. Я застрял здесь.

Может кто-нибудь сказать мне, что мне делать дальше?

РЕДАКТИРОВАТЬ: В консоли нет ошибки, но вывод из моей базы данных отличается.

{ type : manythings, another :{}}

Я сохраняю координату с типом json в моей таблице. Когда я пытаюсь вернуться на карту, на консоли отображается:

{\type : \"somelikethat", \another :\"{}}

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Как и предполагалось, я бы, вероятно, предложил вернуть JsonResponse из контроллера, хотя, если вы возвращаете массив, он уже должен быть преобразован в json. Поэтому первое, что я бы изменил, это ответ контроллера:

use Illuminate\Http\JsonResponse;

public function getData()
{
    $data = Bencana::all()->pluck('coord');

    return new JsonResponse($data);
}

Следующее, что нужно проверить, - это то, что вам действительно нужно передать методу geoJson. Просто чтобы прояснить - вы используете Geo JSON?

Если это так, на целевой странице есть пример структуры json, которую вам нужно передать - хотя Я уверен, что вы уже знаете это. Просто сравните ответ, который вы отправляете с вашего контроллера, с рекомендуемой структурой - возможно, там есть какая-то проблема.

Рассматривая их пример, вам нужны свойства type и geometry объекта json.

{
    "type": "Feature",
    "geometry": {
        "type": "Point",
        "coordinates": [125.6, 10.1]
    },
    "properties": {
        "name": "Dinagat Islands"
    }
}

Извините, если эти вещи кажутся очевидными, но иногда помогает двойная проверка.

0 голосов
/ 08 февраля 2020

если вы установите dataType: 'json' в ajax, вы должны в контроллере использовать return response()->json($data);

, если вы хотите установить ключ для данных, вы можете попробовать это: return response()->json(['data' => $data]);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...