Website-Suche

JSON von PHP an JavaScript zurückgeben?


Ich habe ein PHP-Skript, das über jQuery AJAX aufgerufen wird. Ich möchte, dass das PHP-Skript die Daten im JSON-Format an das JavaScript zurückgibt. Hier ist der Pseudocode im PHP-Skript:

$json = "{";
foreach($result as $addr)
{
    foreach($addr as $line)
    {
        $json .= $line . "\n";
    }
    $json .= "\n\n";
}
$json .= "}";

Im Grunde brauche ich, dass die Ergebnisse der beiden for-Schleifen in $json eingefügt werden.

Antwort #1

Php hat eine eingebaute JSON-Serialisierungsfunktion.

json_encode

json_kodieren

Bitte verwenden Sie das, wenn Sie können, und leiden Sie nicht am „Nicht von uns erfunden“-Syndrom.

Antwort #2

Hier sind ein paar Dinge, die in den vorherigen Antworten fehlen:

  1. Setzen Sie den Header in Ihrem PHP:

    header('Content-type: application/json');
    echo json_encode($array);
    
  2. json_encode() kann ein JavaScript-Array anstelle eines JavaScript-Objekts zurückgeben, siehe:
    JSON von einem PHP-Skript zurückgeben
    Dies könnte in einigen Fällen wichtig sein zu wissen, da Arrays und Objekte nicht dasselbe sind.

Antwort #3

Es gibt einen JSON-Abschnitt in der PHP-Dokumentation. Sie benötigen jedoch PHP 5.2.0.

Ab PHP 5.2.0 ist die JSON-Erweiterung standardmäßig in PHP gebündelt und kompiliert.

Wenn Sie es nicht tun, hier ist 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}
?>

Antwort #4

Normalerweise wären Sie auch daran interessiert, auf der empfangenden Seite eine gewisse Struktur in Ihren Daten zu haben:

json_encode($result)

Dies wird auch die Array-Schlüssel beibehalten.

Denken Sie daran, dass json_encode nur mit UTF-8-codierten Daten funktioniert.

Verwandte Artikel