Laravel 5.1 MethodNotAllowedHttpException 错误

Posted

技术标签:

【中文标题】Laravel 5.1 MethodNotAllowedHttpException 错误【英文标题】:Laravel 5.1 MethodNotAllowedHttpException Error 【发布时间】:2017-09-23 06:41:18 【问题描述】:

我正在使用资源控制器,当我通过 ajax 提交表单时,它显示方法不允许异常。

查看

 !! Form::open(array('route' => 'product.store','class' => 'form-horizontal','id' => 'productform','name' => 'productform','files' => true)) !!
       !! csrf_field() !!
       <div class="form-group" style="padding-top: 20px">
            <label for="productName" class="col-sm-3 control-label">Product name</label>
            <div class="col-sm-9">
                 !! Form::text('productName',null, array('id'=> 'productName','class'=>'form-control','placeholder'=>'Product name'))!!
            </div>
       </div>                                                            
       <div class="form-group">
            <div class="col-sm-9 col-sm-offset-3">
                 !! Form::submit('Save', array('class' => 'btn btn-primary btn-block')) !!
            </div>
                </div>
 !! Form::close() !!

AJAX

$("#productform").submit(function () 
    var token = $('[name=_token]').val();
    $.ajax(
        type: 'POST',
        url: 'product/store',
        data: 
            id: '4',
            _token: token,
         ,
        success: function (data) 
            alert('success');
            return false;
        
    )
    return false;
);

routes.php

Route::resource('product', 'ProductController');

这里有什么问题...非常感谢任何帮助。

【问题讨论】:

此错误意味着缺少路线,根据您提供的 routes.php - 确实缺少路线。您的 AJAX 正在点击“产品/商店”,而您的路线只是“产品”。在 AJAX 中修改路由或 url 获取 baseurl 并像这样添加 baseUrl + 'product/store' 【参考方案1】:

在 AJAX 中

尝试将AJAX中的url设置为路由

$("#productform").submit(function () 
    var token = $('[name=_token]').val();
    $.ajax(
        type: 'POST',
        url: ' route("product.store") ',
        data: 
            id: '4',
            _token: token,
        ,
        success: function (data) 
            alert('success');
            return false;
        
    );
    return false;
);

【讨论】:

【参考方案2】:

当您尝试在 laravel 中存储数据时,您的 URL 必须是。

url: 'product',

尝试继续你的 CMD 并输入:

php artisan route:list 

并检查 product.store Name 的 URI,然后这将是您的 AJAX 中的 url。

【讨论】:

【参考方案3】:

在jquery中

var BASEURL = $("#baseURL").val()

html

&lt;input type="hidden" id="baseURL" value=" url('') " &gt;

【讨论】:

以上是关于Laravel 5.1 MethodNotAllowedHttpException 错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 和 Laravel 5.1 “找不到类‘模型名称’”,有更好的解决方案吗?

Laravel 5.1 删除关系

未定义的变量:请求 - Laravel 5.1

Laravel 5.1 路线未定义

Laravel 5.1 命令空表

Laravel 5.1 文件上传验证