php post json不完整,PHP content-type为"application/json"的post过来的数据$_POST接受不到的问题...

ajax默认是以application/x-www-form-urlencoded方式提交。也就是常见的表单提交方式。在PHP中使用$_POST方式可以轻松获取。

但如果将ajax的请求头强制指定为application/json,那么你的$_POST就接受不到了。必须使用$GLOBALS['HTTP_RAW_POST_DATA']取出来,然后再json_decode就行了。

如fetch、axios默认的请求头就是application/json,所以要注意一下。

还有一些的细节需要了解一下

1、后端必须允许前端定义Content-Type之类的头请求。

header('Access-Control-Allow-Headers:x-requested-with,content-type');

2、php中exit的输出只允许字符串。所以要输出什么之前最好使用(string)转义一下。

3、如果使用ajax的application/json方式,记得data参数是字符串类型的。使用JSON.stringify()转换一下。

jquery ajax的代码:

67d0865f17d9be527254bf8a8ff6c5b4.gif

Document

$(function () {

$.ajax({

type:"post",

url:"http://localhost:8080/news.php",

data: JSON.stringify({

newsid: 101

}),

headers: {

"Content-type": "application/json; charset=utf-8"

},

success: function (data) {

console.log(data)

}

})

})

67d0865f17d9be527254bf8a8ff6c5b4.gif

php代码:

67d0865f17d9be527254bf8a8ff6c5b4.gif

header("Access-Control-Allow-Origin:*");

header('Access-Control-Allow-Headers:x-requested-with,content-type');

$rws_post = $GLOBALS['HTTP_RAW_POST_DATA'];

$mypost = json_decode($rws_post);

$newsid = (string)$mypost->newsid;

exit($newsid);

随机推荐

两个select 左右添加,上下移动

...

用CSS3动画特效实现弹窗效果

提示:如果大家觉得本篇实现的弹窗效果有用,可持续关注.接下会添加更多效果并且封装成插件,这样使用就方便了.效果查看: https://heavis.github.io/hidialog/index.h ...

[C]遍历目录下所有文件

#include#include#includeFILE *fp;using namespace std;voi ...

canvas 画六边形

  • leetcode 1

    题目: 最开始采用暴力解法,两个for循环遍历所有组合形式,时间复杂度为O(n2),代码省略. 进一步学习,采用hash表存储,空间换时间,时间复杂度为O(n),空间复杂度为O(n); 将数组放入ha ...

    Spring的事务传播机制

    1.事务传播类型     新建事务 required required_new   - 挂起当前    非事务方式运行 supports not_supported  - 挂起当前 never    ...

    burp插件开发

    最近这几天在写burp的插件,有一些写burp插件的流程和误区想跟大家分享一下: 第一步,打开burpsuit,打开extender页面,并将burp中自带的api代码导出,方便后续的代码开发: 第二 ...

    syncer.go

    package ) ) ) ].Key,)) )) }

    你所不知道的JSON.stringify

    译者按: 老司机们,你知道JSON.stringify还有第二个和第三个可选参数吗?它们是什么呢? 原文: What you didn’t know about JSON.Stringify 译者: ...

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值