【问题标题】:The POST Method Is Not Supported For This Route. Supported methods: GET, HEAD In laravel 5.8此路由不支持 POST 方法。支持的方法: GET、HEAD 在 laravel 5.8
【发布时间】:2020-06-03 12:21:15
【问题描述】:

我正在使用 ajax 将我的数据保存到 laravel 中的用户表中。我创建了 API,它在发布成功消息的帖子中运行。但是当我尝试使用 Ajax 保存数据时,它会显示此消息

“此路由不支持 POST 方法。支持的方法:GET、HEAD。”

我的控制器代码是

public function register(Request $request) 
{ 
    $validator = Validator::make($request->all(), [ 
        'name' => 'required', 
        'email' => 'required|email', 
        'password' => 'required', 
        'phone' => 'required',
        'country' => 'required',
        'state' => 'required',
        'purpose' => 'required',
        'package' => 'required',
        'months' => 'required',
        'quantity' => 'required',
        'amount' => 'required',
        'user_status' => 'required',
    ]);
    if ($validator->fails()) { 
        return response()->json(['error'=>$validator->errors()], 401);            
    }
    $input = $request->all(); 
    $input['password'] = bcrypt($input['password']); 
    $user = User::create($input); 
    $success['token'] =  $user->createToken('MyApp')-> accessToken; 
    $success['name'] =  $user->name;
    return response()->json(['success'=>$success], $this-> successStatus); 
}

我的路线是

Route::post('register', 'API\UserController@register');

刀片文件代码为

<form id="frmAddTask" action="#" method="post" enctype="multipart/form-data" action="javascript:void(0)">
         @csrf  
        <h2>Order Information</h2>
            <div class="row">   

                <div class="col-md-3">

                    <div class="form-group">
                        <label class="control-label required" for="package">Package</label>
                        <select id="package" name="package" class="form-control">
                            <option value="basic" selected="selected">Basic</option>
                            <option value="regular">Regular</option>
                            <option value="infinite">Infinite</option>
                        </select>
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="form-group">
                        <label class="control-label required" for="months">Months</label>
                        <select id="months" name="months" class="form-control">
                            <option value="1" selected="">1 months</option>
                            <option value="4">4 months</option>
                            <option value="12">12 months</option>
                        </select>
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="form-group">
                        <label class="control-label required" for="quantity">Quantity</label>
                        <select id="quantity" name="quantity" class="form-control">
                            <option value="1" selected="selected">1</option>
                            <option value="2">2</option><option value="3">3</option>
                            <option value="4">4</option><option value="5">5</option>
                            <option value="6">6</option><option value="7">7</option>
                            <option value="8">8</option><option value="9">9</option>
                            <option value="10">10</option>
                        </select>
                    </div>
                </div>
                <div class="col-md-3 ">
                    <label class="control-label required" for="amount">Amount</label>
                    <div class="input-group">
                        <span class="input-group-addon">INR</span>
                        <select id="amount" name="amount" class="form-control">
                            <option value="1" selected="">2500</option>
                            <option value="4">4000</option>
                            <option value="12">7000</option>
                        </select>
                    </div>
                </div>
                </div>
            </div>      
         <hr>   
         <h2>Billing Information</h2>   
         <div class="row">
          <div class="col-md-6 form-group">
            <label for="name">Name:</label>
            <input type="text" class="form-control" name="name" id="name">
          </div>
          <div class="col-md-6 form-group">
            <label for="email">Email:</label>
            <input type="text" class="form-control" name="email" id="email">
          </div>
          <div class="col-md-6 form-group">
            <label for="confirm">Confirm Email:</label>
            <input type="text" class="form-control" name="confirm" id="confirm">
          </div>
          <div class="col-md-6 form-group">
            <label for="phone">Phone:</label>
            <input type="text" class="form-control" name="phone" id="phone">
          </div>
          <div class="col-md-6 form-group">
            <label for="country">Country:</label>
            <input type="text" class="form-control" name="country" id="country">
          </div>
          <div class="col-md-6 form-group">
            <label for="state">State:</label>
            <input type="text" class="form-control" name="state" id="state">
          </div>
          <div class="col-md-6 form-group">
            <label for="phone">Address:</label>
            <textarea class="form-control"></textarea>
          </div>
          <div class="col-md-6 form-group">
            <label for="purpose">Purpose</label> 
            <select id="purpose" name="purpose" value="" class="form-control ">
            <option>Select Purpose</option> 
            <option value="parent">Parent</option> 
            <option value="employmee">Employmee</option>
            </select>
          </div>
          <div class="col-md-12 form-group">
            <input id="btn-add" type="submit" value="Make Payment" class="btn-success"> 
          </div>     
          <!--button type="submit" class="btn btn-default">Submit</button--->
         </div> 
        </form>

我的 ajax 请求是

<script>
  $(document).ready(function(){
  $('#btn-add').click(function(e){
  e.preventDefault();

  $.ajaxSetup({
  headers: {

      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
  }
 });
 $('#btn-add').html('Sending..');
 /* Submit form data using ajax*/
 $.ajax({
  url: "http://localhost:8000/api/register",
  method: 'post',
  data: $('#frmAddTask').serialize(),
  success: function(response){
      $('#exampleModalCenter').modal('hide')
  }});
 });
});
</script>

请建议我哪里错了,并尝试帮助我解决我的问题。

提前致谢

【问题讨论】:

  • 你需要定义两条路由,一条用于get方法(获取表单的地方),另一条用于发布方法(发布论坛数据的地方)
  • 您的路线是在routes/api.php 还是routes/web.php 中定义的?
  • @VadimSirbu 先生,routes/api.php
  • @ayushflitzip,可以附上routes/api.php的全部内容吗?
  • @VadimSirbu 是的先生,

标签: php ajax laravel


【解决方案1】:

您可以在 ajax 中尝试此代码

url:"{{url('/register')}},

【讨论】:

    【解决方案2】:

    这是你的解决方案

    Route::post('/api/register', 'API\UserController@register');
    

    【讨论】:

    • @naeem 感谢您的回答,但我的路线是在 api.php 中定义的,而不是在 web.php 中
    • 你试过了吗@ayushflitzip
    • 是的@naeem 仍然给出了这个路由不支持 POST 方法。支持的方法:GET、HEAD 相同的消息....我更新了我的 api.php 路由
    猜你喜欢
    • 2020-01-22
    • 1970-01-01
    • 2020-06-05
    • 2020-04-19
    • 2021-05-08
    • 2020-04-25
    • 1970-01-01
    • 2020-12-16
    • 2019-08-28
    相关资源
    最近更新 更多