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"); 
?> 

Dies ist meine PHP-Seite, die JSON-Objekt enthält. Ich gebe dieses json Objekt in eine andere Seite Post.php.Weitergabe von JSON-Objekt als URL-Parameter

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

wenn ich einen Dump tat das Ergebnis ist, C: \ wamp \ www \ Hack \ post.php: 16: string 'Array' (Länge = 5). Es wird "Array" anstelle des JSON-Objekts gedruckt. Was mache ich?

+2

Die URI Länge ist begrenzt. Sie sollten JSON-Daten über POST –

+0

übergeben. Entfernen Sie True von der JSON-Dekodierungsfunktion. –

+0

@RuslanOsmanov IMO die Längeneinschränkung ist etwa 2000 Zeichen –

Antwort

0

Wenn Sie das tun json_encode Sie eine Variable haben muss das Ergebnis zu speichern:

$jsonData = json_encode($jsonData) 

Ohne diese Daten immer noch nur ein

PHP-Objekt ist
+0

Teilweise korrekt. Scheitert an vielen Dingen ohne 'urlencode()'. – AbraCadaver

0

In Ihrem ersten Codebeispiel, sind Sie nicht Übergabe des json_encoded Wertes, aber das Array selbst. Ersetzen Sie Ihre letzte Zeile mit diesem, und lassen Sie die vorletzte Zeile:

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

Wie 1slock sagt man hace die json zu kodieren, sondern auch urlencode hinzuzufügen.

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

+1

Ich würde Base-64-Codierung tun, um diese Arbeit überall zu haben. –

+0

urlencode sollte genug sein und sollte für jede Art von Daten funktionieren. Das Problem ist, wenn der JSON zu groß ist, da der Server und der Browser es abhängig von seiner Konfiguration beschneiden können. –