fetch与formdata的故事

前传

很久以前有个前端想学习fetch的用法,于是他用php写了一个接受post请求的接口,然后前台写了一个使用fetch请求PHP接口的demo,如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
    <button onclick="loginbtn();">提交</button>
</body>
<script>
    function loginbtn(){
        console.log("开始请求。。。");
        let params = {'id':"123"};
        fetch("http://localhost/myshop/myshop/data/test1.php",{
            method:"POST",
            mode:'no-cors',
            headers:{},
            body:params
        }).then(function(response){
            console.log(response);
        })
    }
</script>
</html>

结果发现后台获取不了数据,于是他开始向伟大的度娘求救了,度娘告诉他一个方法:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
    <button onclick="loginbtn();">提交</button>
</body>
<script>
    function loginbtn(){
        console.log("开始请求。。。");
        let params = {'id':"123"};
        //将此处的param换成formdata的格式即可
        let formdata = new FormData();
        formdata.append("name","admin");
        fetch("http://localhost/myshop/myshop/data/test1.php",{
            method:"POST",
            mode:'no-cors',
            headers:{},
            body:formdata
        }).then(function(response){
            console.log(response);
        })
    }
</script>
</html>

原因

fetch在post下不支持直接传递参数,如果你说jQuery为什么可以呢?因为jQuery将传递的数据提前使用formdata做了处理。

福利

为了方便响应小伙伴对后台代码的渴求,顺便贴下后台的代码吧

<?php
    header("Access-Control-Allow-Origin:*");
    if(isset($_POST["name"])){
        echo "请求成功";
        print_r($_POST["name"]);
    }else{
        echo "请求失败";
    }

好了,故事讲完了,都回家吃饭吧。。。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值