‘壹’ 如何用php调用外部接口json数据
file_get_contents或者curl都可以
接收到数据后,可以使用php函数json_decode()把json转换成数组或对象格式
‘贰’ php怎么写服务端获取 客户端发来的json
如果使用的是HTTP协议的GET方法,数据保存在$_GET数组中.
如果使用的是HTTP协议的POST方法,数据通常保存在$_POST数组中.
注:如果post方法没有指出数据类型,提交的数据可以通过$HTTP_RAW_POST_DATA获取.
找到数据后可以通过json_decode函数处理下即可转换成数组或对象.
‘叁’ 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就好
‘肆’ php如何读取json的内容
如果json是以对象的方式存储于变量$json中,则这样引用: $json->openid
如果json是以关联数组的方式存储于变量$json中,则这样引用: $json['openid']
如果json是以字符串的方式存储于变量$json中,则需要先转换一下:
$a=json_decode($json);
print_r($a->openid);
或者
$a=json_decode($json,true);
print_r($a['openid']);
‘伍’ php如何接收js传来的json
感觉楼主对json_decode这个函数有点理解错误,这个函数时将一个json格式的字符串转化成php数组用的,前提是其中的参数必须为字符串
那我们回头看下楼主的代码,经过eval以后jsondata变成了一个数组形变量,结构似乎有点奇怪,有5个元素的一个数组,但是每个元素又是一个json对象,而每个json对象又只有一个变量。换句话说如果想获取createvote这个值,那么就需要调用jsondata[0].doing
而且,post发送的数据要求是json对象,而楼主这个根本就是不是json...能否发送都是个问题...
楼上那个说$_POST获取数据的,我试了一下,似乎不行。$_POST['doing']压根就是个未定义的值
如果要json_decode那就没必要先eval一下,感觉会弄巧成拙
给楼主一个代码
js:
vardata='{"doing":"createvote","type":"type","num":"num","votetheme":"votetheme","creater":"loginname"}';
$.post(url,{data:data},function(res){alert(res)});
注意data变量,‘与“的位置,不要写反,反了的话json_decode是不能编译的
php:
<?php
if(isset($_POST["data"]))var_mp(json_decode($_POST["data"],true));
?>
根据返回的格式很明显就是一个php的array格式
post的参数必须是name->value的格式,如果单纯post一个变量,那么就相当于只有value,没有name,所以我这里将post的传参值写为{data:data}第一个data是name,第二个data是之前定义的字符串
‘陆’ php 接收JS过来的JSON数据
用php处理json数据,需要用json_decode函数转成json对象,再取其属性的值.
完整的php程序如下
‘柒’ php如何返回json对象呢
返回json用的json_encode()方法没错,但是需要在头部声明格式。
代码解析
php返回需要用json_encode()方法来将需要转换的字符串转换成json编码格式(注意:仅仅更换文件内容,而返回的文件依然为文本格式且编码为gtk)
所以,这里需要在php头部声明
header('Content-Type:text/json;charset=utf-8');
拓展内容
json
JSON(javaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
json通常被作为配置文件,常见还有.ini
0
‘捌’ php如何接收js传来的json对象
你无法传json对象到服务端交互的,要传的只是一个字符串(Json),是个字符串!
你发的代码里是json的解析,没有多大意义,你在php页面这样调试
var_mp($_REQUEST);//输出所有数据,如果存在的话,你会看到那个参数是啥
另外,json格式,主要方便javascript解析的,而不是php擅长的内容,多数情况下,是PHP返回json数据给js.
php的数组操作函数有主要的两个json_encode()与json_decode();
从你的代码中,我不确定你用何种方式通信,ajax?
我看你用到了jQuery,那里面有个ajax,方式类似这样的:
$.ajax({
type:"post",//method;canbegetwithpostorrequest
url:"/mySever.php",//phpurl
error:function(){alert('Error');},
data:{
data1:name,
data2:age,
},
datatype:"json",//jsonback
timeout:5000,
success:function(msg)
{
//eval(msg);//parasehere
}
});
returnfalse;
}
‘玖’ php 如何将获取json中的参数的值
很简单。
因为Json实际上就是一个字符串,因此语言提供了将其转换成数组,对象的能力。
使用json_decode就可以将字符串转一个关联数组。
比如$data = json_decode("{'success':1,xxxxxxxx}");
echo $data[tender_id];就OK了
‘拾’ php 怎么接收前端传来的json数据
<?php
header("Content-type:text/html;charset=utf-8");
if($_POST){
$d = $_POST['data'];//这里获取的直接就是数组了,不需要用到json_decode
echo $d['doing'];
//print_r($d);
exit;
}
?>
<script src="js/jquery-1.7.2.min.js"></script>
<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) {//注意jquery的$.post的第2个参数必须是键值对形式
alert(res);
});
});
});
</script>
<input id="xx" type="button" value="点击">