首页
学习
活动
专区
工具
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变量来获取。

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

相关·内容

Ajax

responseText 可以获取服务器以字符串形式返回的数据 responseXML 可以获取服务器以XML形式返回的数据 //调用方式 // ajax对象.要获取的方式 xmlHttp.responseText...> Ajax获取XML数据格式 //获取XML传输而来的数据要使用 responseXML方式获取 var Data = xml.responseXML; //返回的是一个document文档对象 //...eval()强制转化和为js对象 非标准json转js对象 //当从服务器返回的数据不是标准json字符串时是无法使用parse的,那么可以试试用eval()强制转化和为js对象 //注意点: 转js对象必须加...json2.js下载地址: PHP基本JSON格式 echo file_get_contents(" JSON文件地址 如(...., data:formdata, //由于jq在发送请求时,会把请求数据自动处理为适合发送的数据格式,但是formdata对象本事就不用处理,

5.9K10

浏览器的常见考点

同样地,我们可以用线程的只是解释:为什么直接操作 DOM 会变慢,性能损耗更大?因为 JS 引擎线程和渲染线程是互斥的。而直接操作 DOM 就会涉及到两个线程互斥之间的通信,所以开销更大。...除此之外,这还能解释为什么script标签为什么会阻塞 DOM 树渲染,毕竟 JS 是可以修改 DOM 的,如果 JS 执行的时候 UI 也工作,就有可能导致不安全的渲染。...它保存在浏览器,参与与服务器的通信。 sessionStorage:与 localStorage 类似,不同的是信息不是永久存储,仅在当前会话下有效。关闭标签或者浏览器,都会清除。...fetch(api, { method: "POST", body: formData }) .then(res => res.json()) .then(json =...const api = "http://localhost:5050/search/song"; fetch(api, { method: "POST", body: JSON.stringify

99020

数据传输POST心法分享,做前端的你还解决不了这个bug?

问题是顺利解决了,但是Chrome POST数据内容居然会在传输过程中发生变化。一直擅长大前端技术的葡萄绝不认输,为了弄明白这一原因,我们来看看POST的细节操作到底有什么。...POST传输的数据变化 弄明白了在不同系统中,控制字符会出现不同的原因,接下来我们就需要搞清楚为什么POST数据在传输过程中发生了变化。 我们来写个简单Demo测试一下。...先在页面上放一个允许换行的textarea, 输入带换行的文本,获取内容看到只有\n转译。...通过FormData直接post数据到服务端,然后直接返回,看到\n全部变成了\r\n。...关于GET和POST区别以及使用相关问题这里不做赘述,要解决POTS传输的数据变化问题,最相关的是Content-Type。

71110

js api 之 fetch、querySelector、form、atob及btoa

js api 之 fetch、querySelector、form、atob及btoa 转载请注明出处: https://www.cnblogs.com/funnyzpc/p/11095862.html...Base64函数 Base64之atob与btoa 以前,在前端,我们是引入Base64.js后调用api实现数据的Base64的编码和解码的运算,现在新的ES标准为我们提供了Base64 的支持,...(); // ...更多操作请在chrome控制台输入命令 fetch fetchjs 新内置的http请求函数,用于替代ajax及原始的XMLHttpRequest,与ajax相似的是它提供了请求头...then的时候,数据是一个steam,所以需要转换成json(调用json()方法) 请求结果在第二个then的时候仍然是一个箭头函数,这个时候如需要对数据进行处理请调用自定义函数处理 fetchPOST...= new FormData(); formdata.append("name",name); formdata.append("price",price

1.4K30

Ajax第一节

设置请求体 xhr.send( "name=Jepson&age=18" ); 注意点 : post请求, 设置请求行时, 拼接参数列表 post必须设置请求头中的content-type为application...获取响应内容 参数提取 参数名 参数类型 描述 传值 默认值 type string 请求方式 get/post 只要不传post,就是get url string 请求地址 接口地址 如果传地址,不发送请求...为什么要使用模板引擎 我们通过ajax获取数据后,需要把数据渲染到页面,在学习模板引擎前,我们的做法是大量的拼接字符串,对于结构简单的页面,这么做还行 但是如果页面结构很复杂,使用拼串的话代码可阅读性非常的差...,从不同源的php文件中获取到了数据 缺点:获取数据的script标签必须写在使用的script标签的前面,必须保证先有数据才能对数据进行渲染。...使用formData必须发送post请求 xhr.open("post", "02-formData.php"); //2.

3.9K20
领券