Laravel, AJAX вызов от входа к функции контроллера 500 ошибка - PullRequest
0 голосов
/ 28 августа 2018

Я не уверен, что происходит с этим, но когда мой ajax-вызов сделан для моего метода php controller, я получаю ошибку 500, и мне интересно, возможно, это ошибка типа данных или просто синтаксис.

Значение, которое я передаю из ввода формы через вызов ajax и в свою функцию, передается в конечную точку url в моем файле service.php.

Сам ajax вызывает функцию успешно, но я не могу проверить результаты моих $ searchResults в функции, потому что, похоже, она не работает в точке передачи.

Я начал вводить Test в свой ввод с точкой останова в браузере, и он показал значение для моего ввода как «T». Нужно ли удалять кавычки или что-то подобное, если это используется в запросе конечной точки?

Что еще похоже на то, что я могу ошибаться? A

service.php

public function getSearch($query)
    {
        return $this->get("/search/search?query={$query}" );
    }

Я также установил новый маршрут для контроллера и функции

Route::post('autocomplete','Controller@autoComplete');

controller.php

public function autoComplete(Request $request)
{

   $search_result = $request->search_result;

   $service = new service();

   //$search_result = "test"; /*this hard coded value works for passing*/
    $searchResults = $service->getSearch($search_result);

    return $searchResults;
}

view.blade.php

$('#productInput').on('input', function(){
if($(this).val() === ''){
   return;
}else{

   const searchResult = $(this).val(); 

   $.ajax({ url: '/account/autocomplete', 
            data: {
                'search_result':searchResult
            },
            type: 'POST', 
            success: function(response){
                console.log(response);
            }
        });
    }

});

1 Ответ

0 голосов
/ 28 августа 2018

Добавьте это к своей голове

<meta name="csrf-token" content="{{ csrf_token() }}">

и передать токен ajax:

$('#productInput').on('input', function(){
if($(this).val() === ''){
   return;
}else{

   const searchResult = $(this).val(); 

   $.ajax({ url: '/account/autocomplete', 
            data: {
                'search_result':searchResult
            },
            "_token": "{{ csrf_token() }}", // **** THIS LINE IS ADDED ***** //
            type: 'POST', 
            success: function(response){
                console.log(response);
            }
        });
    }

});

Я беру часть ajax из этого ответа, так что благодаря Deepak saini . Если этот ответ решил вашу проблему, дайте его ответ плюс.

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