jQuery Tabledit抛出MethodNotAllowedHttpException

jQuery Tabledit抛出MethodNotAllowedHttpException,jquery,laravel,datatables,jquery-plugins,Jquery,Laravel,Datatables,Jquery Plugins,我正在尝试实现jquerytabledit插件来处理内联表字段编辑。问题在于它没有向控制器发送数据(传递参数),而且它抛出了一个错误方法NotAllowedHttpException“No message”。我是Java脚本的新手,请描述一下我做错了什么。 以下是我的控制器代码(首先我想显示脚本发送的参数): 这是我的路线: Route::post('quantityUpdate', ['as' => 'quantityUpdate', 'uses' => 'QuantityCont

我正在尝试实现jquerytabledit插件来处理内联表字段编辑。问题在于它没有向控制器发送数据(传递参数),而且它抛出了一个错误方法NotAllowedHttpException“No message”。我是Java脚本的新手,请描述一下我做错了什么。 以下是我的控制器代码(首先我想显示脚本发送的参数):

这是我的路线:

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);
                }
            });
        });
谢谢你的帮助!:)

试试这个

将路由重写为以下内容:

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); 
} 
});
在视图文件脚本中,更改为以下内容:

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());

这应该行得通。

你的控制台输出是什么样子的?@Polaris我已经编辑了我的帖子并添加了:)将你的路由方法更改为“get”--“route::get”,然后报告。@Polaris我收到一个错误405,在网络控制台中,我看到脚本正在通过post发送数据,即使我更改了获取路径:/i已经发布了一个我认为可能有效的答案。
MethodNotAllowedHttpException无消息
以及
None sent parameters
当我想在开发工具的网络选项卡中检查xhr时。laravel日志对$request->方法说了什么()输出?是的,好的,所以它使用POST。我相信错误是因为TableEdit将信息发布为JSON,而不是应用程序/表单url编码。打开VerifyCsrfToken.php并添加“/quantityUpdate”到$protected数组。然后让我知道这是否修复了MethodNotAllowedHttpException错误。然后将其添加到控制器,查看它是否输出JSON-dd(JSON_decode($request->getContent(),true));我已经编辑了我的答案。我认为这应该行得通。我认为ajax没有使用CSRF令牌,这就是为什么会发生方法不允许异常。因此,我们需要将异常添加到VerifyCsrfToken.php文件中。
\Log::info($request->all());