传递json对象为url参数

问题描述:

<?php 
    $jsonData = array(
    "comments" => "Fresh food", 
    "container" => false, 
    "cookedTime" => 2, 
    "description" => "biryani", 
    "refridgeration" => true, 
    "serves" => 2, 
    "veg" => true 
); 

json_encode($jsonData); 
header("Location:Post.php?json=$jsonData"); 
?> 

这是我的php页面,其中包含json对象。我将这个json对象传递给另一个页面Post.php。传递json对象为url参数

<?php 
$jsonData = $_GET['json']; 
json_decode($jsonData, TRUE); 
echo var_dump($jsonData); 
?> 

当我做转储结果为C:\瓦帕\ WWW \哈克\ post.php中:16:字符串 '阵列'(长度= 5)。 它正在打印“数组”而不是json对象。我该怎么办?

+2

URI的长度是有限的。您应该通过POST传递JSON数据 –

+0

从json解码函数中删除True –

+0

@RuslanOsmanov IMO长度限制约为2000个字符 –

当你做json_encode你必须有一个变量来存储结果:

$jsonData = json_encode($jsonData) 

做不到这一点,你的数据目前还只是一个PHP对象

+0

部分正确。没有'urlencode()'会失败很多事情。 – AbraCadaver

在你的第一个代码示例,你不传递json_encoded值,但数组本身。更换你的这个最后一行,并跳过倒数第二行:

header("Location: Post.php?json=" . json_encode($jsonData)); 

由于1slock说你脑水肿编码的JSON也可加用urlencode。

header("Location: Post.php?json=" . urlencode(json_encode($jsonData)));

+1

我会做基地64编码,让这个工作到处都是。 –

+0

urlencode应该足够了,应该适用于任何类型的数据。问题在于,如果json太大,因为服务器和浏览器可能会根据其配置裁剪它。 –