A. PHP使用POST传递json数据的接收与处理问题
前端传给服务器的只是json 格式的字符串,使用json_decode,
mixed json_decode ( string $json [, bool $assoc ] )
var_mp(json_decode($json));
var_mp(json_decode($json, true));
如果不带参数,则返回为对象
带上true时,内返回数组
foreach($ARR as $k=>$v){
echo 'key='.$k.';value='.$v;
}
单独处理容每个key 和对应的value就好
B. 后端php那里接收到前端post给的json为什么会是转义字符串格式
1,有可能框架对整个参数,进行了转义,反转义一遍即可
2,有可能开启了PHP的自动过滤功能,在php.ini中关闭即可
magic_quotes_gpc=On改为magic_quotes_gpc=Off
C. 在PHP中怎么接收post过来的JSON数据
在PHP中接收POST过来的JSON数据,通常有两种方式。一种是直接使用file_get_contents函数获取原始数据,然后利用json_decode将JSON字符串转换为PHP数组或对象。例如:file_get_contents('php://input');获取数据后,使用json_decode(file_get_contents('php://input'), true)进行解码。另一种方式是通过$_POST超全局变量接收,这种方式需要在发送请求时设置Content-Type为application/json。例如:$_POST['data'],但这种方式并不推荐,因为$_POST通常用于接收表单数据。
下面是一个完整的示例,展示如何在PHP中处理POST过来的JSON数据:
首先,假设前端使用javaScript发送JSON数据,代码如下:
JavaScript代码示例:
function sendData() {
var data = {'zhangsan':'lisi', 'age':18};
var xhr = new XMLHttpRequest();
xhr.open('POST', '/path/to/php/script', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText);
}
};
xhr.send(JSON.stringify(data));
}
然后在PHP中接收并处理这些数据:
PHP代码示例:
<?php
$jsonData = file_get_contents('php://input');
$data = json_decode($jsonData, true);
echo "接收到的数据:";
print_r($data);
?>
上面的PHP代码首先使用file_get_contents('php://input')获取原始数据,然后通过json_decode将其转换为PHP数组。接着,使用print_r输出数据内容。
这种方式不仅适用于POST请求,也适用于其他HTTP方法。通过这种方式,PHP能够灵活地处理不同来源和格式的数据,增强应用的通用性和可维护性。
D. php怎么接收json类型数据
PHP接收JSON格式的数据
在API服务中,目前流行采用json形式来交互。
给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。
接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。因此,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类的内容无法解析,如果用$_POST数组来接收就会失败!
此时可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 来获取提交的数据
查看手册,可以发现$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的区别:
$_POST:通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量。
$GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。
补充说明:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。
E. php传过来的json数据js怎么调用
<?php
header("Content-type:text/html;charset=utf-8");
if($_POST){
$d = $_POST['data'];//这里获取的直接就是数组了,不需要用到json_decode
echo $d['doing'];
//print_r($d);
exit;
}
?>
JS部分代码:
<script type="text/javascript">
$(document).ready(function() {
$("#xx").click(function(){
var url = "test.php";
var str ="{'doing':'createvote','type':'type','num':'num','votetheme':'votetheme','creater':'loginname'}";//json格式字符串
var data = eval('('+str+')');//转换成数组对象,不加这步,那么PHP获取的是字符串。
$.post(url, {'data': data}, function(res) {
alert(res);
});
});
});
</script>
<input id="xx" type="button" value="点击">
F. php 通过curl传递的json数据如何获取
你将$hello直接解析成了jsons 如果服务器端要接收。 你可以在
$hello=json_en......;下一行加上
$data=array('hello'=>$hello);
将curl_setopt($ch,CURLOPT_POSTFIELDS,$hello);改成版curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
在URL端你可以用权var_mp($_POST);
G. 如何用php调用外部接口json数据
一般使用php发送请求,获取返回的数据,进行解析;
<?php
$url="接口地址";
//发送请求获取返回值,file_get_contents只支持get请求,post使用curl
$json = file_get_contents($url);
//把json数据转化成数组
$data = json_decode($json,true);
//打印看看
print_r($data);
?>