jQuery-Tabledit генерирует исключение MethodNotAllowedHttpException - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь реализовать плагин jQuery-Tabledit для обработки редактирования встроенных полей таблицы.Проблема в том, что он не отправляет данные (передавая параметры) в контроллер, а также выдает ошибку MethodNotAllowedHttpException «No message».Я новичок в javascripts, поэтому, пожалуйста, опишите, что я делаю не так.Вот мой код для контроллера (прежде всего я хочу отобразить параметры, отправленные скриптом):

public function quantityUpdate(Request $request){    
        dd($request->all());
    }

Вот мой маршрут:

Route::post('quantityUpdate', ['as' => 'quantityUpdate', 'uses' => 'QuantityController@quantityUpdate']);

Скрипт в файле просмотра:

<script src="{{ asset('js/jquery.tabledit.js') }}"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $.ajaxSetup({
                headers: {
                    'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
                }
            });
            $('#products_table').Tabledit({
                url: '{{route('quantityUpdate')}}',             
                columns: {
                    identifier: [0, 'id'],
                    editable: [[4, 'quantity']]
                },
                editButton: false,
                deleteButton: false,
                saveButton: false,
                restoreButton: false,
                onSuccess: function(data, textStatus, jqXHR) {

                },
                onFail: function(jqXHR, textStatus, errorThrown) {

                },
                onAjax: function(action, serialize) {

                    console.log("on Ajax");
                    console.log("action : ", action);
                    console.log("data : ", serialize);
                }
            });
        });

И мой стол:

<table class="table table-hover datatable" id="products_table">
                    <thead>
                    <tr>
                        <th>#</th>
                        <th>Name</th>
                        <th>Quantity</th>
                    </tr>
                    </thead>
                    <tbody>
                    @foreach($items as $item)
                        <tr>
                            <td>{{ $item->id }}</td>
                            <td>{{ $item->name }}</td>
                            <td id="quantity">{{ $item->quantity }}</td>
                        </tr>
                    @endforeach
                    </tbody>
                </table>

Вывод на консоль:

on Ajax
action :  edit
data :  id=5&quantity=111140&action=edit
ReferenceError: exception is not defined

Спасибо за помощь!:)

1 Ответ

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

Попробуйте это.

Перепишите маршрут на следующее:

Route::post('/quantityUpdate', 'QuantityController@quantityUpdate');

В скрипте вашего файла представления измените следующее:

$('#products_table').Tabledit({ 
url: '/quantityUpdate', 
columns: { 
identifier: [0, 'id'], 
editable: [[4, 'quantity']] 
}, 

onSuccess: function(data, textStatus, jqXHR) { 
console.log(data); 
}, 
onFail: function(jqXHR, textStatus, errorThrown) { 

}, 
onAjax: function(action, serialize) { 

console.log("on Ajax"); 
console.log("action : ", action); 
console.log("data : ", serialize); 
} 
});

В вашем VerifyCsrfToken.php файл:

protected $except = [
        '/quantityUpdate'
    ];

И, наконец, в вашем контроллере QuantityUpdate измените код на:

\Log::info($request->all());

, и это должно работать.

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