Ajax-вызов для запуска функции контроллера - PullRequest
0 голосов
/ 03 февраля 2019

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

Я использую Chart.js и Google Maps API в одном представлении.Все инициализируется нормально, поэтому никаких проблем нет.Я нанес на карту несколько маркеров и загрузил набор данных в Chart.js.Я хочу загрузить новый набор данных в Chart.js при нажатии на маркер.Я пытаюсь вызвать функцию контроллера с другим набором данных с помощью AJAX.Ошибки не возвращаются, журнал консоли от вызова AJAX работает, но функция в MapController не вызывается.

Я попытался выполнить POST для маршрута / map с Почтальоном, и это, кажется, работает нормально.

Вызов AJAX в представлении

$.ajax({ 
            url: "/map",
            type: "POST",
            data: "",
            headers: {"X-CSRF-TOKEN": $("meta[name="csrf-token"]").attr("content")},
            success: console.log("AJAX END")
            });

Маршрут

Route::post('/map', 'MapController@NewChart');

Функция контроллера

    public function NewChart()
{

    echo "<script>console.log('NewChart function called');</script>";

    $chart = new chart;
    $chart->labels(['Q1', 'Q2', 'Q3', 'Q4']);
    $chart->dataset('2019', 'line', [100, 10, 4, 10]);
    $chart->dataset('2018', 'line', [5, 5, 5, 5]);

    return view('map', ['chart' => $chart]);

}

Журнал консоли из функции NewChart не запускается, поэтому вызов AJAX никогда не достигает функции.

Я надеюсь, что кто-нибудь скажет мне, что я здесь делаю неправильно.

1 Ответ

0 голосов
/ 03 февраля 2019

Пожалуйста, попробуйте использовать следующую структуру для вашего ajax-запроса:

  $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
  $.ajax({
            url: "/map",
            type: 'POST',
            data: {},
            success: function (data) {    
                console.log("AJAX END");
            }
        });

И, возможно, есть проблема с вашей отладкой "<script>console.log('NewChart funtion called');</script>", но все работает нормально.Просто попробуйте использовать возвращаемые данные.

success: function (data) {    
                $('#someDiv').html(data);
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...