fetch post PHP后台接收不到数据的问题

当使用fetch()的POST方法发送数据到PHP后台时,发现后台始终无法通过$_POST接收到数据,原因是fetch()默认发送JSON数据,而非formdata。解决方法是设置headers和body格式,或者调整PHP后台的接收方式,避免依赖$_POST。
摘要由CSDN通过智能技术生成

1.fetch()方法作用是跨网络异步获取资源,类似jQuery.ajax()方法,但是最近在使用fetch() post时,却怎么都接收不到,换了几种传参和接收的写法,怎么写都是接收到null,后来发现是php后台接收的问题,传参的写法是对的,正常的fetch()写法如下:

fetch('url', {
    method: 'POST',
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    },
    body:JSON.stringify({
        id : "1024"
    })
}).then(function(res) {
    // 提取响应数据进行处理,json()方法可以将数据转换为json格式
    return res.json();
}).then(function(detail) {
    // 管道函数,接收上一个函数返回的内容
    console.log(detail);
}).catch(function(error) {
    // 网络出错或者禁止访问,404/500无法找到资源不会报错
    console.log(error);
});    

而php后台 $_POST 接收到null是因为上面这种正常写法向服务器提交的数据是一个json数据,而不是传统的formdata。

所以要修改下headers及body的格式:

headers: {
    'Content-Type': 'appli
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值