Как получить значение из ajax call в laravel

Я хочу получить значение из вызова ajax в функции контроллера. Как я могу это сделать?

Мой код здесь:

<a  href="javascript:void(0)" onclick="amount_pay('{{ $res->id}}');"><i class="fa fa-pencil-square-o"></i></a>

Мой сценарий:

<script>

function amount_pay(id) 
         { 
            $.ajax({
            type: 'POST',
            url:  'amount_popup/'+ id,// calling the file  with id

            success: function (data) {
                alert(1);
            }
        });
      } 
</script>

Мой маршрут:

Route::post('amount_popup/{id}', 'AdminControllerAmountController@amount_to_pay');

моя функция контроллера:

public function amount_to_pay($id)
    {   
        echo $id;
    }

3 ответа

  1. Использовать

    var url = '{{ route('amount_popup', ['id' => #id]) }}';
    
    url = url.replace('#id', id);
    

    вместо

    'amount_popup/'+ id
    
  2. Вы пытаетесь получить значение из запроса GET, но отправляете форму как запрос POST.

    Вы должны изменить код скрипта на:

    <script>
    
    function amount_pay(id) 
             { 
                $.ajax({
                type: 'GET', //THIS NEEDS TO BE GET
                url:  'amount_popup/'+ id,// calling the file  with id
    
                success: function (data) {
                    alert(1);
                }
            });
          } 
    </script>
    

    ЗАТЕМ ИЗМЕНИТЕ МАРШРУТ НА:

    Route::get('amount_popup/{id}', 'AdminController\AmountController@amount_to_pay');
    

    ИЛИ ЕСЛИ ВЫ ХОТИТЕ ИСПОЛЬЗОВАТЬ POST… СДЕЛАТЬ ЭТО.

    <script>
    
    function amount_pay(id) 
             { 
                $.ajax({
                type: 'POST',
                url:  'amount_popup',
                data: "id=" + id + "&_token={{ csrf_token() }}", //laravel checks for the CSRF token in post requests
    
                success: function (data) {
                    alert(1);
                }
            });
          } 
    </script>
    

    ТОГДА ВАШ МАРШРУТ:

    Route::post('/amount_popup', 'AdminController\AmountController@amount_to_pay');
    

    ЗАТЕМ КОНТРОЛЛЕР:

    public function amount_to_pay(Request $request)
        {   
            return $request->input('id');
        }
    

    Для дополнительной информации:

    Laravel 5 Маршрут