使用fetch出现unexpected end of input 解决方法

传统的ajax(即xmlhttprequest)由于使用叫复杂,于是js新推出了fetch来获取后台数据,无需引进jq的$.ajax,也可以使用promise的链式用法去处理回调地狱,着实很方便,在谷歌上已经全部兼容,其他浏览器兼容还需要进一步的优化,推荐文章:

https://segmentfault.com/a/1190000003810652

通过这篇文章,自己写了一个fetch和PHP去测试(获取手机号码的归属地):

php:

<?php
header("Access-Control-Allow-Origin:*");
// 响应类型
header('Access-Control-Allow-Methods:POST');
// 响应头设置
header('Access-Control-Allow-Headers:x-requested-with, content-type');

function getKey($key, $default = "")
{
    return trim(isset($_REQUEST[$key]) ? $_REQUEST[$key] : $default);
}

$phone= getKey("phone");
if (!empty($phone)) {
    $menuInfo = file_get_contents("https://way.jd.com/jisuapi/query4?shouji=".$phone."&appkey=86d15a3db19f29dccae449f8426a8cb3");
    echo $menuInfo;
}

  js:

<script>
    
    fetch("http://fm.xiaofany.com/APIpage/phone.php", {
        method: "post",
        headers: new Headers({
            'Accept': 'application/json'
        }),
        body: JSON.stringify({"phone": 1393622322})
    }).then(res => res.json())
        .then(data => console.log(data))
        .catch(e=>console.log(`错误为${e}`))
</script>

  运行以后发生了如下错误:

1083235-20180323111057798-716834837.png

json意外结束,查找了官方文档,发现在传值的时候做好使用URLSearchParams的方法来传值,更改一下:

 

 

<script>

    fetch("http://fm.xiaofany.com/APIpage/phone.php", {
        method: "post",
        headers: new Headers({
            'Accept': 'application/json'
        }),
        body: new URLSearchParams({"phone": 1393622322})
    }).then(res => res.json())
        .then(data => console.log(data))
        .catch(e=>console.log(`错误为${e}`))
</script>

  完美:

1083235-20180323111239423-708959870.png

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值