php如何接收js传来的json

在js中的代码如下:
var url = "index.php";
var data="[{'doing':'createvote'},{'type':'type'},{'num':'num'},{'votetheme':'votetheme'},{'creater':'loginname'}]";
var jsondata=eval('('+data+')');

$.post(url, jsondata, function(res) {

});
那么在php中如何获取这个json?
比如这样获取,
$order=$_REQUEST[];//要求这个$order获取的是json所有数据比如经过解析以后,
$orderarray=json_decode($order);//$orderarray就是整个多维数组
那么这个$_REQUEST[];的参数应该怎么填

感觉楼主对json_decode这个函数有点理解错误,这个函数时将一个json格式的字符串转化成php数组用的,前提是其中的参数必须为字符串

那我们回头看下楼主的代码,经过eval以后jsondata变成了一个数组形变量,结构似乎有点奇怪,有5个元素的一个数组,但是每个元素又是一个json对象,而每个json对象又只有一个变量。换句话说如果想获取createvote这个值,那么就需要调用jsondata[0].doing


而且,post发送的数据要求是json对象,而楼主这个根本就是不是json...能否发送都是个问题...


楼上那个说$_POST获取数据的,我试了一下,似乎不行。$_POST['doing']压根就是个未定义的值


如果要json_decode那就没必要先eval一下,感觉会弄巧成拙


给楼主一个代码

js:

var data='{"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_dump(json_decode($_POST["data"], true)); 
?>


根据返回的格式很明显就是一个php的array格式


post的参数必须是name->value的格式,如果单纯post一个变量,那么就相当于只有value,没有name,所以我这里将post的传参值写为{data:data}第一个data是name,第二个data是之前定义的字符串

追问

你这么一说我明白了,不只是json_decode没理解,更重要的是对json和字符串的区别没有分明白,我想问下如果json是{'m':{}},格式的,那就在PHP里面接收M就可以,那问题是在js里面怎么往m里面动态添加健值对?

追答

首先说{m:{}}这个格式是可以的,可以将整个json对象,作为数据发送出去。到服务器可以直接转换成array数组。

例如调用createvote这个数据,那么就是$_POST['m']['doing']就是了


动态添加json对象

var data={"doing":"createvote","type":"type","num":"num","votetheme":"votetheme","creater":"loginname"};
$("body").append(JSON.stringify(data)+"</br>")
data['test']="dddddd";  //*****这句发挥作用******
$("body").append(JSON.stringify(data))

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-13
<?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="点击">

本回答被提问者和网友采纳
第2个回答  推荐于2016-01-16
传值包括get或post,不论哪种方式,都有传参的键值,例如
get:
js文件:window.location.href='/index.php?ac={"id":100}';//传值
php文件:$json = $_GET['ac']; //获取值

post:一般是用ajax来传的值,例如:
js文件:$.post('/index.php',{'ac':'{"id":100}'},function(){ //传值
//返回值

});

php文件:$json = $_POST['ac']; //获取值
第3个回答  2014-11-05
直接
$order = array();
$order['doing'] = $_POST['doing'];
$order['type'] = $_POST['type'];
...
就可以了追问

能不能用json_decode函数解析成一个数组么?然后从数组里面取

追答

先取后循环,先把$_POST的整个二维数组赋值到某个变量,然后循环这个变量就可以取值了

追问

对我就这个不会,怎么把整个二位数组赋值到一个变量?你写一下这句代码,假设js就按照我那样写,谢了

追答

{"k1":{"name":"name1"},"k2":{"name":"name2"}}
比如你的json是这样的,然后
$k1 = $_POST['k1']
foreach($k1 as $k=>$v){
$name1 = $v['name'];

}
就可以了

追问

谢谢你让我更好的理解了json的写法用法,谢谢

如何使用PHP接收JSON数据
在PHP中接收JSON数据,关键在于使用`php:\/\/input`和`file_get_contents()`函数。`php:\/\/input`是一个只读流,可读取请求正文中的原始数据,而`file_get_contents()`用于将文件读入字符串,这为我们提供了处理JSON数据的途径。一旦获取到请求正文,我们使用`file_get_contents('php:\/\/input')`将数...

php怎么接收json类型数据
给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application\/x-www.form-urlencoded标准的数据类型。因此,对型如text\/xml 或者 soap 或者 application\/octe...

PHP如何接收JSON?
对于json,PHP有对应的方法进行操作。一般而言,json会以字符串形式传给PHP脚本,一般都是放在$_POST里面,<?php \/\/ 接收 $json_parameter = $_POST['json_str']; \/\/ 处理, 变成数组 $array = json_decode($json_parameter); \/\/ PHP 把数组数据变成json格式字符串,发给页面 ...

PHP怎么读取JS文件里的数据
按格式序列成字符串...然后放到hidden里提交给服务器 或者ajax~必须有办法序列成字符串... 如果用js框架的话..可以尝试某些框架序列成json的函数 然后在php上可以用json_decode解析数据

c#和php接收json数据方法
1、获取要接受的json对象。2、准备一个实体类接受json对象。3、第一步的json对象复制到剪切板。4、可以看出RootObject中的user_List[]数组包含User_List类使用使用代码接受对象代码。

thinkphp后台发送的json,前台的js里怎么接收
代码如下:$.each(rData.rows,function(){alert(this.PK_NoticeID);\/\/用this.你那些字段alert(this.cell[0])})后台返回的数据是{'id':1,'name':'st','grant':[{'tm_id':1,'tm_name':'zc'},{'tm_id':2,'tm_name':'ww'}]}前台获取vardata=eval("("+json+")...

php 接收 json 数据,并解释
加入对方是post过来的。name 为orderInfo;<?php orderInfo = isset($_post['orderInfo']) ? trim($_post['orderInfo']) : '';if(strlen($orderInfo) < 1) { die('wrong data');} \/\/希望你能写一个更严格的验证函数,去验证数据的合法性 orderInfoArray = json_decode($orderInfo, true);...

thinkphp后台发送的json,前台的js里怎么接收
我举个简单的$.post方法,这是用ajax提交数据,提交数据的形式是post。.post('index.php','',function(data){ alert(data);});其中index.php是你后台发送json数据的php文件,function里面的data参数则是php文件返回的json数据,一般是echo 出来的json数据,第二个参数是用来传递参数给index.php的 ...

PHP使用POST传递json数据的接收与处理问题
前端传给服务器的只是json 格式的字符串,使用json_decode,mixed json_decode ( string $json [, bool $assoc ] )var_dump(json_decode($json));var_dump(json_decode($json, true));如果不带参数,则返回为对象 带上true时,返回数组 foreach($ARR as $k=>$v){ echo 'key='.$k.';...

如何用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);?> ...

相似回答