首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么PHP不能从Js FormData fetch获取$_POST数据?

PHP不能直接从Js FormData fetch获取$_POST数据的原因是因为它们使用了不同的数据传输方式和数据格式。

首先,FormData是一种用于在前端收集表单数据的API,它可以将表单数据以键值对的形式组织起来,并通过HTTP请求发送给服务器。而$_POST是PHP中的一个超全局变量,用于接收通过POST方法提交的表单数据。

在使用fetch函数发送请求时,如果请求的Content-Type设置为"application/x-www-form-urlencoded"(默认值),则fetch会将FormData对象中的数据转换为URL编码的字符串,并将其放在请求的body中发送给服务器。而PHP在接收到这样的请求时,会自动将请求体中的URL编码字符串解析为键值对,并将其存储在$_POST变量中。

然而,如果将fetch请求的Content-Type设置为"multipart/form-data",则fetch会将FormData对象中的数据以一种更复杂的方式进行编码,并将其放在请求的body中发送给服务器。这种编码方式不同于URL编码,PHP无法直接将其解析为键值对存储在$_POST变量中。

为了处理这种情况,PHP提供了一个名为$_FILES的超全局变量,用于接收通过"multipart/form-data"方式提交的表单数据。通过$_FILES变量,PHP可以解析请求体中的数据,并将其存储为文件或临时文件。

综上所述,PHP不能直接从Js FormData fetch获取$_POST数据是因为它们使用了不同的数据传输方式和数据格式。如果需要从fetch请求中获取表单数据,可以通过解析$_FILES变量来获取。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券