Javascript Jquery表单数据传递为空
我有一个ajax调用,在submit按钮上单击ajax调用启动Javascript Jquery表单数据传递为空,javascript,jquery,ajax,laravel,request,Javascript,Jquery,Ajax,Laravel,Request,我有一个ajax调用,在submit按钮上单击ajax调用启动 <form id="editPet" method="patch" enctype="multipart/form-data"> inputs... <button id="updatePet" data-id="{{ $pet->uuid }}" data-token="{{ csrf_token() }}" type="button">SAVE</button> &l
<form id="editPet" method="patch" enctype="multipart/form-data">
inputs...
<button id="updatePet" data-id="{{ $pet->uuid }}" data-token="{{ csrf_token() }}" type="button">SAVE</button>
</form>
在服务器端,我收到了带有dd($request->all())
的请求,它是空数组。
我在这里遗漏了什么?通过删除以下内容可以解决此问题:
contentType: false,
processData: false,
正如@Taplar在评论中提到的
默认情况下,数据作为对象传递到数据选项
(从技术上讲,字符串以外的任何内容)将被处理并
转换为查询字符串,符合默认内容类型
“应用程序/x-www-form-urlencoded”
你能把你的服务器端也添加进去吗?
$(“#editPet”)[0]
这应该是有价值的吗?可能应该是$(“#editPet”).val()
不,我们不能把$(“#editPet”).val()添加到php,它的juqery语法中。如果我在你的ajax请求中没有用php纠正你的话。新表单数据($(“#editPet”)[0])
选中Preserve Log in Developer Tools并查看请求负载。然后您将知道它在哪一侧…尝试去掉processData:false
“默认情况下,作为对象传递到数据选项的数据(从技术上讲,不是字符串)将被处理并转换为查询字符串,适用于默认内容类型“application/x-www-form-urlencoded”。如果要发送DOMDocument或其他未处理的数据,请将此选项设置为false。“您正在为其提供数据的FormData元素。您希望它在请求时将其转换为查询字符串。
contentType: false,
processData: false,