Я отправляю данные через ajax на мой контроллер, как
$.ajax({ url: 'test', type: 'POST', data: { id: sessionStorage.getItem('user_id') }, dataType: 'json', contentType: "application/json; charset=utf-8"/*, success:function(id){ alert(sessionStorage.getItem('user_id')); }*/ }); и в контроллере я использую
 public function getUserMessages(){ $id = Input::get('id'); $messages = Message::where('message_by' , Auth::user()->id)->where('message_for',$id)->get(); echo "id is ",$id; return $messages; } 
  Я ничего не получаю в $id .  Я также пробовал $_POST['id'] котором указан undefined index id .  Как я могу получить значение id?  $request->has('id') возвращает false. 
Проблема в том, что вы устанавливаете контент приложения как json, вам не нужно устанавливать контент.
jQuery ajax
contentType (по умолчанию: 'application / x-www-form-urlencoded; charset = UTF-8')
 $.ajax({ url: 'test', type: 'POST', data: { id: sessionStorage.getItem('user_id') }, dataType: 'json', success:function(data){ console.log(data); // always good to output content for debugginn } }); 
Надеюсь, эта помощь. Теперь ваш ajax должен работать.
  Вы должны использовать класс Request вместо Input : 
 public function getUserMessages(\Illuminate\Http\Request $request){ $id = $request->id; $messages = Message::where('message_by' , Auth::user()->id)->where('message_for',$id)->get(); return $messages; } 
Ваш вызов ajax не работает и будет вызывать 500 Server Error, потому что вам нужно передавать токен csrf laravel с ним всякий раз, когда вы POST что-то. Создайте метатег в верхней части вашего вида лезвия, например:
 <meta name="_token_" content="{{ csrf_token() }}"> 
и получить значение, когда вы делаете вызов ajax:
 $.ajax({ url: '/test', type: 'POST', data: { id: sessionStorage.getItem('user_id'), _token:document.getElementsByName('_token_')[0].getAttribute('content') }, success:function(id){ alert(id); } }); 
Скорее всего, функция успеха в вашем вызове ajax будет только оповещать [объект объекта], чтобы получить лучший обзор о том, что было возвращено, использовать
 console.log(id); 
вместо.
Вы также можете создать функцию ошибки для вызова ajax, чтобы отображались возможные ошибки. Просто добавьте
 error: function(err){ console.log(err); } 
после функции успеха.
У вас есть маршрут для запросов AJAX? (Я этого не вижу).
Пожалуйста, попробуйте следующий код:
В коде AJAX:
 $.ajax({ type: "POST", url: "{{ route('ajax_route') }}", data: { _token: "{{ csrf_token() }}", data: "sample data" }, success: function(data){ $(".result").html(data); }, dataType: "json" }); 
В коде контроллера:
 public function ajaxAction(Request $request){ if ($request->isXmlHttpRequest() && $request->isMethod('post')) { $data = $request->input('data', null); echo json_encode($data); } } 
В вашем коде маршрута:
 Route::post('/ajax_route', ['as' => 'ajax-action', 'uses' => 'YourController@ajaxAction']);