Upate таблица с AJAX в Laravel 5.3 не работает - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь использовать запрос AJAX PUT для обновления строки в моей базе данных, и я пытаюсь отправить запрос на мой контроллер.Это мой AJAX-вызов:

$('#edit-trucks').on('click',function(){

    var truckNo = $('#XA').val();
    var truckOwner = $('#truck-owner').val();
    var vehicle_number = $('#vehicle-number').val();
    var capacity = $('#capacity').val();
    var end_of_insurance = $('#end-of-insurance').val();
    var end_of_kteo = $('#end-of-KTEO').val();
    var truckCode = $('#truck-code').val();
    var leased = $('#leased').val();
    var truckModel = $('#truck-model').val(); 

    $.ajax({
        url: 'editTruck',
        type: 'put',           
        data: {
            truckNo: truckNo,
            truckOwner: truckOwner,
            vehicle_number: vehicle_number,
            capacity: capacity,
            end_of_insurance: end_of_insurance,
            end_of_kteo: end_of_kteo,
            truckCode: truckCode,
            leased: leased,
            truckModel: truckModel
          },
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },           
        contentType: 'application/json',
        dataType: 'JSON',
        success: function(){
            console.log('success');
        },            
        error: function(){
           console.log('something went wrong');
        }         
    });
});

Пока все хорошо.Если я console.log () мои данные, кажется, я могу получить их из формы.Я использую Laravel Collective для формы:

 {!!Form::open(array('action' => ['Trucks@editTruck'], 'method' => 'put')) !!}  

, и мой маршрут следующий:

Route::put('/editTruck', 'Trucks@editTruck',function(){ });

Сейчас я использую Request $ request в параметрах контроллера, но каким-то образомПохоже, я не могу получить входящие значения.Например, следующий var_dump скажет NULL.

public function editTruck(Request $request)
{              
      $data = $request->input('truckNo');
      var_dump($data);
}

То же самое происходит, если я использую

$data = $request->truckNo;

.Поэтому мне интересно, как я могу получить значения, которые были отправлены на мой контроллер с моим вызовом AJAX?Почему я получаю NULL значений?

Я планировал сделать следующее:

 public function editTruck(Request $request)
{
       $singleTruck = Truck::find($request->truckNo);          
       $singleTruck->truckNo = $request->input('truckNo'); 
       $singleTruck->truckOwner = $request->input('truckOwner');
       ........
       $singleTruck->save();
}

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

ОК, я нашел это.Похоже, AJAX был уродливым.Итак, вот как это должно быть написано:

  $('#edit-trucks').on('click',function(){

    var truckNo = $('#XA').val();
    var truckOwner = $('#truck-owner').val();
    var vehicle_number = $('#vehicle-number').val();
    var capacity = $('#vehicle_capacity').val();
    var end_of_insurance = $('#end-of-insurance').val();
    var end_of_kteo = $('#end-of-KTEO').val();
    var truckCode = $('#truck-code').val();
    var leased = $('#leasing').val();
    var truckModel = $('#truck-model').val();


    var outGoingData = {
            'truckNo': truckNo,
            'truckOwner': truckOwner,
            'vehicle_number': vehicle_number,
            'capacity': capacity,
            'end_of_insurance': end_of_insurance,
            'end_of_kteo': end_of_kteo,
            'truckCode': truckCode,
            'leased': leased,
            'truckModel': truckModel,
          };

    var data = JSON.stringify(outGoingData);


    $.ajax({
        url: 'editTruck',
        type: 'POST',
        data: data,            <!-- The error was here. It was data: {data}-->
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },           
        contentType: 'application/json',
        dataType: 'JSON',            
        success: function(response){
            alert("The data should be "+ response);
        },            
        error: function(){
            console.log('skata');
        }         
    });
});
0 голосов
/ 30 сентября 2018

Вы можете найти ответ здесь:

https://laravel.io/forum/02-13-2014-i-can-not-get-inputs-from-a-putpatch-request

Вам следует изменить метод и метод формы в вашем js-коде на "post" и добавить дополнительное поле "_method" ="PUT"

вероятно, это может помочь.

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