ajax表单数据不会显示在控制器中



为了将formData发送到控制器,我尝试了许多不同的AJAX设置组合。不知何故,我不能得到表单输入在我的控制器内,尽管试图返回它将所有类型的方式。我能知道我错过了什么导致我无法在控制器中获得输入吗?

$("#formCropUpdate").on("submit", function (event) {
event.preventDefault();
var formId = $('#formId').val();
var url = '/Form/' + formId;
var form = this;
formData = new FormData(form);
console.log(Array.from(formData));
$.ajax({
url: url,
type: "PATCH",
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
cache: false,
dataType: false,
contentType: false,
processData: false,
data:formData,
success: function (response) {
console.log(response);
return false;
},
});
});
public function update(Request $request){
$UserId = Auth::user()->id;
$Company = Company::where('id', Auth::user()->company_id)->first();
return $request->all();
}

use

<meta name="csrf-token" content="{{ csrf_token() }}">

在头和jQuery代码

$('#form_submit').submit(function (e) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
e.preventDefault();
var base = window.location.origin;
let formData = new FormData(this);
let  my_url = base + "/article-store";
$.ajax({
type: 'post',
url: my_url,
data: formData,
cache: false,
contentType: false,
processData: false,
success: (data) => {

},
error: function (data) {


}
});
});

经过相当多的挖掘,因为我正在做的是使用PATCH请求,它仍然不工作,因为现在与FormData。为了解决它,我们需要恶搞的方法通过添加补丁方法formData和AJAX设置改变。然后你将收到控制器内的所有请求。

参考:https://laracasts.com/discuss/channels/laravel/ajax-formdata-and-put-fails

https://laracasts.com/discuss/channels/javascript/axiosajax-http-patch-requests-with-file-not-working

$("#formCropUpdate").on("submit", function (event) {
event.preventDefault();
var formId = $('#formId').val();
var url = '/Form/' + formId;
var form = this;
formData = new FormData(form);
formData.append('_method', 'PATCH');
console.log(Array.from(formData));
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: "POST",
url: url,
data:formData,
cache: false,
contentType: false,
processData: false,
success: function (response) {
console.log(response);
return false;
},
});
});

最新更新