Search code examples
ajaxlaravelsaveresponse

how to save AJAX RESPONSE in Laravel


   return Response()->json(['message' => $input['first_name']]);

give me in console my input text How can i save it in database?

I try to use

$input = Request::all();
        $user = Auth::user();
        $user->first_name = Response()->json(['message' => $input['first_name']]);
        $user->save();

but dont work :/


Solution

  • You might be confused with the response().. That Response()... is what should be RETURNED in the end of the controller. That example would be

        $input = Request::all();
        $user = Auth::user();
        $user->first_name = $input->first_name;
        $user->save();
        return response()->json(['user_saved' => $user ]);
    

    EDIT

    // HomeController.php
    public function editUser(Request $request){
      $user = User::find(Auth::user()->id)->first();
      $user->first_name = $request->first_name;
      if($user->save()){
        return response()->json(["response" =>true,"user"=>$user]);
      }
      return response()->json(["response" =>false,"user"=>$user]);
    }
    
    // routes/web.php
     Route::post('/user/update',[
      'uses'=>'HomeController@editUser',
      'as'=>'editUser'
     ]);
    
    // javascript 
    $('#updateProfile').on('click', function() {
    $.ajax({
        method: 'POST',
        url: '{{route("editUser")}}',
        data: { first_name: $('#firstname').val(), _token: token }
    })
    

    (NOTE if you're using .js files, you might want to on your **.blade.php including the .js file, define the variable url there like you seem to be doing with token For example in blade) // index.blade.php

    <script>
      var token = "{{Session::token()}}";
      var urlEditUser = '{{route("editUser")}}';
    </script>