【发布时间】:2018-01-12 05:10:59
【问题描述】:
最近我一直在尝试解决一个没有运气的问题,基本上我正在尝试使用 AJAX 向服务器提交表单,该表单有文件,所以我在 JQuery 中使用 FormData javascript 对象1.12。数据到达服务器,但我不知道如何格式化它。
这是我的 AJAX 函数:
function saveMenu(id){
var formElement = document.getElementById("menu-form");
var formData = new FormData(formElement);
formData.append('_method', 'PUT');
$( "#form-wrapper" ).toggleClass( "be-loading-active" );
$.ajax({
type: 'PUT',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: "{{url('myUrl')}}",
data: formData,
enctype: 'multipart/form-data',
processData: false,
success: function(response) {
toastr.success('Yai! Saved successfully!')
},
error: function(response) {
toastr.error('Oh oh! Something went really wrong!')
},
complete: function() {
$( "#form-wrapper" ).toggleClass( "be-loading-active" )
}
});
}
当我在我的控制器中执行dd($request->all()); 时,我会得到如下信息:
array:1 [
"------WebKitFormBoundaryRCIAg1VylATQGx46\r\nContent-Disposition:_form-data;_name" => """
"_token"\r\n
\r\n
jtv4bnn8WQnP3eqmKZV3xWka2YOpnNc1pgrIfk0D\r\n
------WebKitFormBoundaryRCIAg1VylATQGx46\r\n
Content-Disposition: form-data; name="blocks[43][title]"\r\n
\r\n
...
我尝试过的事情:
- 将 HTTP 谓词设置为 POST。结果相同。
- 设置AJAX
contentType: false、contentType: application/json。空响应。 - 删除
enctype: 'multipart/form-data'。相同的响应。
感谢任何帮助。
【问题讨论】:
-
嗯.. 我会尝试在我的位置创建一个可行的实例。你试过这个 dd($request->_method) 吗?
-
@RomnickSusa 是的,它返回 null。
-
删除
nctype: 'multipart/form-data后是否删除了js缓存,因为我认为这是关键 -
@ThomasMoors 在我看来是一样的。
-
如果您没有使用 1.9.0 之前的 jQuery 版本。 ,你应该把`type: 'PUT'`改为`method: 'PUT'`
标签: ajax laravel http laravel-5.4 form-data