PUT方法无法在表单中运行会引发错误

时间:2019-09-15 16:57:27

标签: jquery ajax laravel

我正在使用相同的表格来插入,搜索和更新数据。对于插入,我使用Laravel的store方法,并使用Ajax进行搜索和更新。

插入记录和搜索文本字段效果很好,但是在更新记录时会引发错误“此路线不支持POST方法。受支持的方法:GET,HEAD,PUT。”

在表单中仍显示相同错误的情况下添加了刀片指令 @method('PUT')

路线:

Route::get('search-data/{sid?}', 'DataController@dataSearch');
Route::put('update-data/{sid?}', 'DataController@dataUpdate');

控制器:

use App\exModel;

public function dataSearch($sid)
    {
        $search = exModel::find($sid);
        return Response::json($search);
    }
    public function dataUpdate(Request $request, $sid)
    {
        $var = exModel::find($sid);
        $var->name = $request->name;
        $var->save();
    return Response::json($var);
    }

脚本:

//Search
  $(document).ready(function () {
  $('#search').on('keydown', function(e) {
    if(e.which == 13){
    var sid = $("#search").val();
      $.ajax({
                  url: '{{ URL::to('search-data/')}}'+"/"+ sid,
                  type: "Get",
                  dataType: 'json',
                   success: function(response){ 
                    $('#Getname').val(response.name);
                 }
                });
            }
    });
     });
//Update
$("#btn-update").click(function (e) {
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    })
    e.preventDefault();
    var formData = {
        name: $('#Getname').val(),
    }
    var sid = $('#search').val();
    console.log(formData);
    $.ajax({
        url: '{{ URL::to('update-data/')}}'+"/"+ sid,
        type: 'PUT',
        data: formData,
        dataType: 'json',
         success: function (response) {
            console.log(response);
            $('#Getname').val(response.name);
        },
    });
});

查看:

<form method="POST" action="{{ route('data.store') }}">
  @method('PUT')
  @csrf
  <div>
    <label>ID No</label>
    <input type="text" id="search" class="form-control">
  </div>
  <div>
    <label>Name</label>
    <input type="text" name="name" id="Getname" class="form-control">
  </div>
<div>
    <button class="btn btn-success" input type="button" onclick="this.form.submit()">Save</button>
</div>
  <div>
    <button class="btn btn-info" type="button" id="btn-update">Update Record
    </button>
  </div>
</form>

2 个答案:

答案 0 :(得分:0)

我不是sur,但是可能您在post方法的形式中使用了put方法bur,可能是有冲突的。尝试使用post而不是put

答案 1 :(得分:0)

引用来源https://laracasts.com/discuss/channels/laravel/ajax-formdata-and-put-fails

使用POST请求配置对后端的Ajax调用,然后将PUT方法作为变量添加到数据集中。

$ajax({
    type: 'POST'
    url: "/path/to/route",
    data: {name: $('#Getname').val(), '_method':'PUT'},
    success: function(data) {
        console.log(data);    
    }
});