ajax 错误 - laravel - crud - 此路由不支持 GET 方法。支持的方法:POST

error with ajax - laravel - crud - The GET method is not supported for this route. Supported methods: POST

我想实现这个视图,其中只有几个字段被加载,很多...使用“Asignar”按钮我提取我需要填写表格字段的数据。 .. 问题是当更改数据并点击“Enviar IP”进行更新时,出于某种原因我收到错误“此路由不支持 GET 方法。支持的方法:POST。”但是这条路由配置为POST.

来自 index.blade 视图的脚本

function updateData(){
    var id = $('#id').val();
    var estado = $('#estado').val();
    var modalidad = $('#modalidad').val();
    var inspector = $('#inspector').val();
    var lugar = $('#lugar').val();

    $.ajax({
        type: "post",
        dataType: "json",
        data: {estado:estado, modalidad:modalidad, inspector:inspector, lugar:lugar},
        url: "/inspecciones/update/"+id,
        success: function(data){
            

            console.log('pericia asignada');
        }
    })


}

控制器

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Siniestro;
use App\Models\User;

class InspeccionController extends Controller
{
    public function index()
    {

        $users = User::all();
        $data = Siniestro::all();

        return view('inspecciones.index', compact('users','data'));
    }

    public function allData()
    {
        $data = Siniestro::orderBy('id', 'DESC')->get();
        return response()->json($data);
    }

    public function editData($id)
    {
        $data = Siniestro::findOrFail($id);
        return response()->json($data);
    }

    public function updateData(Request $request)
    {
        $data = Siniestro::findOrFail($id)->update([
            "inspector" => $request->siniestro,
            "estado" => $request->estado,
            "modalidad" => $request->modalidad,
            "lugar" => $request->lugar,
        ]);

        return response()->json($data);
    }
}

web.php - 路线

Route::POST('/inspecciones/update/{id}', [InspeccionController::class, 'updateData']);

index view

这里是mi HTML

@extends('layouts.app')

@section('content')
    <section class="section">
        <div class="section-header">
            <h3 class="page__heading">Derivar IP</h3>
        </div>
        <div class="section-body">
            <div class="row">
                <div class="col-sm-9">
                    <div class="card">
                        <div class="card-header">                          
                                Inspecciones coordinadas                        
                        </div>
                        <div class="card-body">
                            <table class="table table-sm m-1 p-1 table-bordered table-hover table-striped tablita" style="width:100%">
                                <thead>
                                    <tr>
                                        <th scope="col">Id</th>
                                        <th scope="col">Siniestro</th>
                                        <th scope="col">Fecha IP</th>
                                        <th scope="col">Estado</th>                                    
                                        <th scope="col">Modalidad</th>
                                        <th scope="col">Dirección</th>
                                        <th scope="col">Localidad</th>

                                        <th scope="col">Inspector</th>
                                        <th scope="col">Lugar</th>
                                        
                                        <th scope="col">Acciones</th>
                                    </tr>
                                </thead>
                                <tbody>

                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
                <div class="col-sm-3">
                    <div class="card">
                    <div class="card-header">                          
                                <span id="asignarT">Asignar a perito</span>
                                <span id="enviarT">Enviar IP</span>                         
                        </div>
                        <div class="card-body">
                                    <div class="col-xs-12 col-sm-12 col-md-12">
                                        <div class="form-group">
                                            <label for="siniestro">Siniestro</label>
                                            <input type="text" name="siniestro" class="form-control"  id="siniestro" for="siniestro" >
                                        </div>
                                    </div>

                                    <div class="form-group">
                                    <label for="">Perito</label>
                                        <select class="form-select col-xs-12 col-sm-12 col-md-12" aria-label="Default select example" id="inspector"´for="inspector" name="inspector"">
                                                    <option selected value="">--seleccionar--</option>
                                                    @foreach ($users as $user)
                                                    <option value="{{ $user->id}}">{{ $user->name }}</option>
                                                    @endforeach
                                        </select>
                                    </div>
                                    <div class="form-group">
                                    <label for="estado">Estado</label>
                                    <select class="form-select col-xs-12 col-sm-12 col-md-12" aria-label="Default select example" id="estado" for="estado" name="estado">
                                            <option selected></option>
                                            <option value="Coordinado">Coordinado</option>
                                            <option value="Ausente">Ausente</option>
                                            <option value="Peritando">Derivado a inspector</option>
                                            <option value="Baja">Baja</option>
                                        </select>
                                    </div>
                                    <div class="col-xs-6 col-sm-6 col-md-6">
                                        <div class="form-group">
                                            <label for="fechaip">Fecha de IP</label>
                                            <input type="text"  class="form-control"  id="fechaip" for="fechaip" name="fechaip">
                                        </div>
                                    </div>
                                    <div class="col-xs-6 col-sm-6 col-md-6">
                                        <div class="form-group">
                                            <label for="direccion">Direccion</label>
                                            <input type="text"  class="form-control"  id="direccion" for="direccion" name="direccion">
                                        </div>
                                    </div>
                                    <div class="col-xs-6 col-sm-6 col-md-6">
                                        <div class="form-group">
                                            <label for="localidad">Localidad</label>
                                            <input type="text" name="localidad" class="form-control"  id="localidad" for="localidad" name="localidad">
                                        </div>
                                    </div>
                                    <div class="form-group">    
                                    <label for="modalidad">Tipo de inspeccion</label>
                                    <select class="form-select col-xs-12 col-sm-12 col-md-12" aria-label="Default select example" id="modalidad" for="modalidad" name="modalidad">
                                            <option selected></option>
                                            <option value="presencial">Presencial</option>
                                            <option value="videollamada">Videollamada</option>
                                            <option value="foto y presupuesto">Por foto y presupuesto</option>
                                            <option value="foto">Por foto</option>
                                        </select>
                                    </div>
                                    <div class="form-group">
                                        <label for="lugar">Lugar de inspección</label>
                                        <select class="form-select col-xs-12 col-sm-12 col-md-12" aria-label="Default select example" id="lugar" for="lugar" name="lugar">
                                            <option selected></option>
                                            <option value="TH">Taller homologado</option>
                                            <option value="Taller del asegurado">Taller del asegurado</option>
                                            <option value="Domicilio particular">Domicilio particular</option>
                                            
                                        </select>
                                    </div>

                                    <input type="hidden" id="id">
                                    <button type="submit" id="asignarButton" class="btn btn-primary btn-sm">Asignar a perito</button>
                                    <button type="submit" id="enviarButton" onclick="updateData()" class="btn btn-primary btn-sm">Enviar IP</button>
                                                      
                                                        
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
@endsection

尝试使用 type="button" 或阻止默认操作

<button type="button" id="enviarButton" onclick="updateData()" class="btn btn-primary btn-sm">Enviar IP</button>

<button type="submit" id="enviarButton" onclick="updateData(event)" class="btn btn-primary btn-sm">Enviar IP</button>

并在 updateData(event) 函数中

//accept the event as parameter
function updateData(event){
    //prevent the default action
    event.preventDefault();

    var id = $('#id').val();
    var estado = $('#estado').val();
    var modalidad = $('#modalidad').val();
    var inspector = $('#inspector').val();
    var lugar = $('#lugar').val();

    $.ajax({
        type: "post",
        dataType: "json",
        data: {estado:estado, modalidad:modalidad, inspector:inspector, lugar:lugar},
        url: "/inspecciones/update/"+id,
        success: function(data){
            

            console.log('pericia asignada');
        }
    })

}