2016-10-22 4 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: \ WAMP \ WWW \ Hack \ Post.php: 16: строка 'Массив' (длина = 5). Это печать «Массив» вместо объекта json. Что я делаю?

+2

Длина URI ограничена. Вы должны передавать данные JSON через POST –

+0

Удалить True из функции json decode –

+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

Я бы сделал кодировку base 64, чтобы эта работа была повсюду. –

+0

urlencode должен быть достаточным и должен работать для любых типов данных. Пробег - это если json слишком велик, потому что сервер и браузер могут обрезать его в зависимости от его конфигурации. –