【问题标题】:My ajax request return status error 405 on laravel我在 laravel 上的 ajax 请求返回状态错误 405
【发布时间】:2020-05-12 13:42:20
【问题描述】:

我正在使用 laravel 6。当使用外部 ajax.js 文件处理我的表单时,它返回错误 405。 消息:此路由不支持 POST 方法。支持的方法:GET、HEAD。

这是我在刀片中的表单:

<form >
 @csrf
     <div class="form-group">
         <label>Name:</label>
         <input type="text" name="name" class="form-control" placeholder="Name" required="">
      </div>
      <div class="form-group">
          <label>Password:</label>
          <input type="password" name="password" class="form-control" placeholder="Password"       required="">
       </div>
       <div class="form-group">
           <strong>Email:</strong>
           <input type="email" name="email" class="form-control" placeholder="Email" required="">
       </div>
       <div class="form-group">
        <button class="btn btn-success btn-submit">Submit</button>
       </div>
    </form>

我的 ajax.js:

$(document).on('submit','#employeeSignupFrom',function (e) {
var token =  $('input[name="_token"]').attr('value')
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': token
    }
});
$.ajax({
    $url:'/signupemployee',
    type:'post',
    data: $(this).serialize(),
    contentType:'json',
    success: function( response, textStatus, jQxhr ){
      alert('done')
    },
    error: function( jqXhr, textStatus, errorThrown ){
        alert('error!');
    }
});
e.preventDefault()
 })

路线(web.php):

Route::post('/signupemployee','FormsController@signupEmployee');

和我的控制器:

<?php

 namespace App\Http\Controllers;

  use Illuminate\Http\Request;
  use Illuminate\Http\Response;
  class FormsControllers extends Controller
   {
    public function signupEmployee(Request $request){
      $employeeInfo=$request->all();
      return response()->json(['alert'=>'done!']);
   }
 }

【问题讨论】:

  • 先通过 php artisan route:cache 清除缓存
  • 它会导致问题!。我无法打开任何页面。Facade\Ignition\Exceptions\ViewException Route [signupEmployee] 未定义。 (查看:C:\xampp\htdocs\jobyob\resources\views\mainLayout\mLayout.blade.php)
  • 那是什么问题?您只是在清除缓存以确保您使用的是正确的路线。

标签: ajax laravel


【解决方案1】:

首先从您的网址中删除 $ 符号:

//$url:'/signupemployee', <- remove $
url:'/signupemployee',

第二次更改 contentType 为:

contentType: 'application/json',

最后你的 ajax 应该是这样的:

$.ajax({
     url: '/signupemployee', //<- $ sign should deleted
     type: 'POST',
     data: data,
     contentType: 'application/json', //<- not just json
     headers: {
         'X-CSRF-TOKEN': token
     }
})

【讨论】:

  • tnx 非常,错误405是因为我在ajax方法中设置url的错误。我不知道为什么我犯了这个错误“$url”!你是对的 contentType 值是错误的。但我的标题工作正常@c0mmander
猜你喜欢
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 2020-05-02
相关资源
最近更新 更多