前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >后台接收fetch传递的post数据

后台接收fetch传递的post数据

原创
作者头像
IT工作者
发布2021-12-30 21:40:54
发布2021-12-30 21:40:54
1.8K00
代码可运行
举报
文章被收录于专栏:程序技术知识程序技术知识
运行总次数:0
代码可运行

fetch官网post传递数据用的是JSON.stringify()的形式:

代码语言:javascript
代码运行次数:0
运行
复制

fetch('http://www.tingchunyu.com/test/fetch_test/fetch_getuser_test.php', {
    body: JSON.stringify({id:666}),
    headers: {
        'content-type': 'application/json'
    },
    method: 'POST',
})
    .then(response => {
        if (response.ok){//判断请求是否成功
            return response.json()
        }
        throw new Error('请求发生错误')
    })
    .then(data=>{
        console.log(data)
    })
    .catch(error => {
        console.log(error)
    })

但是像上面这样写后台按照以前接收变量的方式总是接收null。造成这个的原因是因为这样向服务器提交的数据是一个json数据,而不是传统的formdata。如下图所示:

因此想让后台接收到数据有以下两种解决方法

将上面代码body的格式做以下修改

代码语言:javascript
代码运行次数:0
运行
复制
body: JSON.stringify({id:666})修改为 body: 'id=666'

//如果有多个参数可以用"&"进行连接 如:body: 'id=666&type=0'

但是这种写法如果有许多参数要传递的话就有点麻烦了。

第二种方法,保持以上代码不变。修改后台接收参数的方式。以PHP为例:

// 将 $_POST['id']修改成以下方式

代码语言:javascript
代码运行次数:0
运行
复制
$data = json_decode(file_get_contents('php://input'),true);
$id = $data['id'];//这样就可以接收到ID了

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档