【问题标题】:405 (Method Not Allowed) error on ajax in Laravel 8Laravel 8 中 ajax 的 405 (Method Not Allowed) 错误
【发布时间】:2021-12-12 14:19:18
【问题描述】:

我试图在我的 Laravel 8 项目中调用一个 ajax 函数。但是在每次通话时我都会收到错误POST http://127.0.0.1:8000/getReasonForVisit 405 (Method Not Allowed)。我尝试了很多选项,例如changing post method to get, change url 等,但没有用。如果有人可以帮助我,那将很有帮助。

这是我的代码。

JS 文件

function getReasonForVisit(catId) {
       
  $.ajaxSetup({
     headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
     }
  });
  $.ajax({
      type: 'POST',
      url : '/getReasonForVisit',
      data : {'catId' : catId },
      dataType: 'json',
        success:function(data) {
           console.log(data);
        }
  });
}

$('#treatment-category').on('change', function (){
   var catId = $(this).val();
   getReasonForVisit(catId);
});

查看

<select class="form-control form-select" name="category" id="treatment-category">
                                        
   <?php $categories = App::make("App\Http\Controllers\AppointmentsController")->getTreatmentCategories(); ?>
   @foreach($categories as $cat)  
      <option value="{{ $cat->id }}">{{ $cat->category_name }}</option>
   @endforeach
</select>

路线

Route::post('/getReasonForVisit', [App\Http\Controllers\AppointmentsController::class, 'getReasonForVisit'])->name('getReasonForVisit');

控制器

class AppointmentsController extends Controller
{
    public function getTreatmentCategories() {
       $categories = DB::table('treatment_category')->get();
       return $categories;
    }

    public function getReasonForVisit() {
       echo 111;
    }
}

编辑

我确实清除了我的路由缓存。现在它显示错误CSRF token mismatch

【问题讨论】:

    标签: ajax laravel laravel-8 http-status-code-405


    【解决方案1】:

    请将选项 type 更改为 method

     $.ajax({
          method: 'POST',
          url : '/getReasonForVisit',
          data : {'catId' : catId },
          dataType: 'json',
            success:function(data) {
               console.log(data);
            }
      });
    

    【讨论】:

    • 我已经清除了我的路由缓存,现在错误已更改CSRF token mismatch。我将类型更改为方法,仍然是同样的错误
    • 你在 中标记了这个元数据吗?
    • 你是对的。我在视图中缺少此标签。现在问题解决了
    【解决方案2】:

    我解决了我的问题。实际上,我的刀片中缺少 csrf 元标记。所以现在我在 &lt;head&gt; 标记的视图刀片文件中添加了这段代码。

    <head>
       <meta name="csrf-token" content="{{ csrf_token() }}">
    </head>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 2016-06-15
      • 1970-01-01
      相关资源
      最近更新 更多