Ich habe ein Skript PHP, das über jQuery AJAX aufgerufen wird. Ich möchte, dass das Skript PHP die Daten im JSON-Format an das Javascript zurückgibt. Hier ist der Pseudo-Code im Skript PHP:
$json = "{";
foreach($result as $addr)
{
foreach($addr as $line)
{
$json .= $line . "\n";
}
$json .= "\n\n";
}
$json .= "}";
Grundsätzlich brauche ich die Ergebnisse der beiden, damit Loops in $ json eingefügt werden.
PHP hat eine eingebaute JSON-Serialisierungsfunktion.
json_encode
Bitte verwenden Sie das, wenn Sie das Not Invented Here-Syndrom haben und nicht leiden.
In den vorherigen Antworten fehlen ein paar Dinge:
Setze Header in deinem PHP:
header('Content-type: application/json');
echo json_encode($array);
json_encode()
kann ein JavaScript array anstelle von JavaScript object zurückgeben, siehe:
JSON aus einem PHP Skript zurückgeben
Dies kann in einigen Fällen wichtig sein, da Arrays und Objekte nicht identisch sind.
In der PHP-Dokumentation gibt es einen JSON-Abschnitt . Sie benötigen jedoch PHP 5.2.0.
Ab PHP 5.2.0 wird die JSON-Erweiterung standardmäßig in PHP zusammengefasst und kompiliert.
Wenn Sie dies nicht tun, ist hier die PECL-Bibliothek , die Sie installieren können.
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr); // {"a":1,"b":2,"c":3,"d":4,"e":5}
?>
Normalerweise wären Sie daran interessiert, Ihre Daten auch auf der Empfangsseite zu strukturieren:
json_encode($result)
Dadurch bleiben auch die Array-Schlüssel erhalten.
Denken Sie daran, dass json_encode nur für utf8-kodierte Daten funktioniert.
Sie können Simple JSON für PHP verwenden. Es sendet die Header, die Ihnen beim Schmieden des JSON helfen.
Es sieht aus wie :
<?php
// Include the json class
include('includes/json.php');
// Then create the PHP-Json Object to suits your needs
// Set a variable ; var name = {}
$Json = new json('var', 'name');
// Fire a callback ; callback({});
$Json = new json('callback', 'name');
// Just send a raw JSON ; {}
$Json = new json();
// Build data
$object = new stdClass();
$object->test = 'OK';
$arraytest = array('1','2','3');
$jsonOnly = '{"Hello" : "darling"}';
// Add some content
$Json->add('width', '565px');
$Json->add('You are logged IN');
$Json->add('An_Object', $object);
$Json->add("An_Array",$arraytest);
$Json->add("A_Json",$jsonOnly);
// Finally, send the JSON.
$Json->send();
?>
$ msg = "Sie haben ein falsches Kennwort für den Benutzernamen OR eingegeben"; $ responso = json_encode ($ msg);
echo "{\"status\" : \"400\", \"responce\" : \"603\", \"message\" : \"You Enter Wrong Username OR Password\", \"feed\":".str_replace("<p>","",$responso). "}";