im使用laravel 5.6通过Ajax将表单数据发送到服务器 当将数据发送到服务器时,我已经指定了ajax的POST方法和web.php中的路由方法也要发布,问题是,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');
答案 0 :(得分:1)
这里是使用FormData的工作代码示例。 使用“方法” 配置而不是“类型” 。
var form = document.getElementById("ajaxForm");
var formData = new FormData(form);
var url = form.action;
$.ajax({
method : 'POST',
url : url,
data : formData,
contentType: false,
processData: false
}).done(function (data) {
console.log(data);
}).error(function (data) {
console.log(data);
});
不要忘记在表单中添加CSRF令牌。
<form method="POST" action="/addNewPerson" id="ajaxForm">
@csrf
...
</form>
或者从头开始配置ajax方法。
在 添加
<meta name="csrf-token" content="{{ csrf_token() }}">
并在JavaScript中添加
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
答案 1 :(得分:0)
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');
}
});