Php 405 laravel 5.6中的错误

Php 405 laravel 5.6中的错误,php,laravel,routing,Php,Laravel,Routing,我使用laravel 5.6通过ajax向服务器发送表单数据 在将数据发送到服务器时,我已经指定了ajax发送POST的方法和web.php发送POST的路由方法,问题是,ajax使用GET方法而不是POST发送表单数据。我应该换什么 ajax代码 var form = $('#personPersonalInfoForm')[0]; var formData = new FormData(form); $.ajax({ url:"/addNewPerson", Type: "

我使用laravel 5.6通过ajax向服务器发送表单数据 在将数据发送到服务器时,我已经指定了ajax发送POST的方法和web.php发送POST的路由方法,问题是,ajax使用GET方法而不是POST发送表单数据。我应该换什么

ajax代码

var form = $('#personPersonalInfoForm')[0];
var formData = new FormData(form);

$.ajax({
    url:"/addNewPerson",
    Type: "POST",
    data: formData,
    contentType: false,
    processData: false,
    success: function(data)
    {
        alert(data);
    }
});
web.php代码

Route::post('/addNewPerson', 'adminController@addNewPerson');
web.php

Route::post('/addNewPerson', 'adminController@addNewPerson')->name(admin.add_new_person);
在adminController中:

public function addNewPerson(Request $request){
   // you can check request parameters
   //return response()->json($request->all());

   // add new person code here ...

   return response()->json(array('status'=>'success','message'=>'person added'));
}
您的ajax代码应该是:

$.ajax({
    url:"/addNewPerson",
    type: "POST",
    data:$('#personPersonalInfoForm').serialize(),
    dataType:'json',
    contentType: 'application/json',
    success: function(data)
    {
        alert(data);
    }, 
    error:function(){
       alert('ERROR');
    }
});

下面是一个使用FormData的工作代码示例。 使用“方法”配置而不是“类型”


不要忘记在表单中添加CSRF令牌

<form method="POST" action="/addNewPerson" id="ajaxForm">
    @csrf
    ...
</form>

在表单和ajax中添加url?url仅在表单中存在。这样做更好,因为如果使用正确的事件侦听器,您可以对多个表单使用相同的JS。如果您谈论的是CSRF令牌,那么不,您可以在表单或AjaxSetup中添加它。
<form method="POST" action="/addNewPerson" id="ajaxForm">
    @csrf
    ...
</form>
<meta name="csrf-token" content="{{ csrf_token() }}">
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});