2016-10-22 128 views
0
<?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個字符 –

回答

0

當你做json_encode你必須有一個變量來存儲結果:

$jsonData = json_encode($jsonData) 

做不到這一點,你的數據目前還只是一個PHP對象

+0

部分正確。沒有'urlencode()'會失敗很多事情。 – AbraCadaver

0

在你的第一個代碼示例,你不傳遞json_encoded值,但數組本身。更換你的這個最後一行,並跳過倒數第二行:

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

由於1slock說你腦水腫編碼的JSON也可加用urlencode。

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

+1

我會做基地64編碼,讓這個工作到處都是。 –

+0

urlencode應該足夠了,應該適用於任何類型的數據。問題在於,如果json太大,因爲服務器和瀏覽器可能會根據其配置裁剪它。 –