通过JQuery的$.ajax()把 json 数据 post 给 PHP
2024-10-15 08:59:13
通过JQuery的$.ajax()把 json 数据 post 给 PHP时的几种情况:
无法在PHP中通过$_POST 以及 $_REQUEST 获取json数据,即
$json = $_POST['json']; // empty($json) 为1
注:PHP 默认只识别 application/x-www.form-urlencoded 标准的数据类型,因此,对型如 text/xml 或者 soap 或者 application/octet-stream 之类的内容无法解析,如果用 $_POST 数组来接收就会失败。
情况A:
js里没有加入属性contentType: "application/json; charset=utf-8",
var submit_sync = function() {
$.ajax({
type: "post",
url: 'add-post-json.php',
async: false, // 使用同步方式
// 1 需要使用JSON.stringify 否则格式为 a=2&b=3&now=14...
// 2 需要强制类型转换,否则格式为 {"a":"2","b":"3"}
data: JSON.stringify({
a: parseInt($('input[name="a"]').val()),
b: parseInt($('input[name="b"]').val()),
now: new Date().getTime() // 注意不要在此行增加逗号
}), dataType: "json",
success: function(data) {
$('#result').text(data.result);
} // 注意不要在此行增加逗号
});
}
- 使用 $GLOBALS['HTTP_RAW_POST_DATA'] 后无法获取到数据,即
- $json = $GLOBALS['HTTP_RAW_POST_DATA']; // empty($json) 为 1
- 使用file_get_contents("php://input"); 可以获取数据,即
$json = file_get_contents("php://input"); // empty($json) 为 0
情况B:
- js里加入属性contentType: "application/json; charset=utf-8",
var submit_sync = function() {
$.ajax({
type: "post",
url: 'add-post-json.php',
async: false, // 使用同步方式
// 1 需要使用JSON.stringify 否则格式为 a=2&b=3&now=14...
// 2 需要强制类型转换,否则格式为 {"a":"2","b":"3"}
data: JSON.stringify({
a: parseInt($('input[name="a"]').val()),
b: parseInt($('input[name="b"]').val()),
now: new Date().getTime() // 注意不要在此行增加逗号
}),
contentType: "application/json; charset=utf-8",dataType: "json",
success: function(data) {
$('#result').text(data.result);
} // 注意不要在此行增加逗号
});
}- 使用 $GLOBALS['HTTP_RAW_POST_DATA'] 后可以获取到数据,即
$json = $GLOBALS['HTTP_RAW_POST_DATA']; // empty($json) 为 0
- 使用file_get_contents("php://input"); 可以获取数据,即
$json = file_get_contents("php://input"); // empty($json) 为 0
- 注:php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input 不能用于 enctype="multipart/form-data"。
最新文章
- [OpenCV] Convolutional Neural Network
- winFrom 常用控件属性及方法介绍
- 黄聪:说说JSON和JSONP,也许你会豁然开朗(转)
- ubuntu 12.04 安装 redis
- Gnome创建桌面快捷方式
- JS中对象与字符串的互相转换
- phpcms 修改后台 主页面的模板
- CodeForces 489B (贪心 或 最大匹配) BerSU Ball
- HDU2544最短路(dijkstra)
- SRM 399(1-250pt)
- 设置checkbox为只读(readOnly)
- 第十二节:MVC中的一些特殊优化
- 【转】 HDMI介绍与流程
- L330 Black hole picture captured for first time in space ‘breakthrough’
- android 应用程序中执行Linux 命令
- python基础一数据类型之字符串
- python tqdm函数
- Church 整数前驱的推导
- ue4 TimeRemaining(ratio)找不到的问题
- Squid代理服务器(四)——反向代理