Im heutigen Internet ist AJAX kein unbekanntes Wort mehr. Wenn man von AJAX spricht, fällt einem vielleicht sofort XML ein, das durch RSS entstanden ist. XML-Parsing ist wahrscheinlich kein Problem mehr, insbesondere mit PHP5 und dem Aufkommen einer großen Anzahl von XML-Parsern, wie beispielsweise dem leichtesten SimpleXML. Bei AJAX ist die XML-Analyse jedoch eher auf die Unterstützung von Front-End-Javascript ausgerichtet. Ich denke, jeder, der XML analysiert hat, wird von Bäumen und Knoten verwirrt sein. Es ist unbestreitbar, dass XML eine sehr gute Methode zur Datenspeicherung ist, aber seine Flexibilität erschwert die Analyse. Natürlich bezieht sich die hier erwähnte Schwierigkeit auf den Protagonisten dieses Artikels – JSON.
Was ist JSON? Ich werde das Konzept nicht wiederholen. Laienhaft ausgedrückt handelt es sich um ein Datenspeicherformat, genau wie eine PHP-serialisierte Zeichenfolge. Es handelt sich um eine Datenbeschreibung. Wenn wir beispielsweise ein Array serialisieren und speichern, kann es problemlos deserialisiert und angewendet werden. Das Gleiche gilt für JSON, mit der Ausnahme, dass es eine interaktive Brücke zwischen clientseitigem Javascript und serverseitigem PHP baut. Wir verwenden PHP, um die JSON-Zeichenfolge zu generieren, und übergeben diese dann an das Front-End. Javascript kann sie problemlos in JSON konvertieren und dann anwenden. Laienhaft ausgedrückt sieht es wirklich wie ein Array aus.
Zurück zum Geschäft, wie man JSON verwendet. PHP5.2 verfügt über integrierte Unterstützung für JSON. Wenn es niedriger als diese Version ist, gibt es natürlich viele PHP-Versionsimplementierungen auf dem Markt. Verwenden Sie einfach die gewünschte Version. Jetzt sprechen wir hauptsächlich über die integrierte JSON-Unterstützung von PHP. Sehr einfach, zwei Funktionen: json_encode und json_decode (sehr ähnlich der Serialisierung). Eine zum Kodieren und eine zum Dekodieren. Schauen wir uns zunächst die Verwendung der Kodierung an:
$arr = array(
'name' => 'Chen Yixin',
'nick' => ; 'deep space',
'contact' => array(
'email' => 'shenkong at qq dot com',
'website' => 'http:// www. chenyixin.com',
);
$json_string = json_encode($arr;) ein Array. Es sollte darauf hingewiesen werden, dass chinesische Zeichen bei Nicht-UTF-8-Codierung nicht codiert werden können und das Ergebnis null ist. Wenn Sie daher gb2312 zum Schreiben von PHP-Code verwenden, müssen Sie iconv oder mb verwenden, um den enthaltenen Inhalt zu konvertieren Chinesisch in UTF-8 ist dann json_encoded, und die obigen Ausgabeergebnisse lauten wie folgt:
{"name":u9648u6bc5u946b",nick":u6df1u7a7a",contact":{"email": „shenkong at qq dot com“, „website“: „http://www.chenyixin.com“}}
Ich habe Ihnen gesagt, dass es der Serialisierung sehr ähnlich ist, aber Sie glauben es immer noch nicht. Nach der Codierung muss PHP die entsprechende Funktion json_decode bereitstellen. Die Operation lautet wie folgt:
$arr = array (
'name ' => 'Chen Yixin',
'nick' => 'Deep Space',
'contact' => array(
'email' => 'shenkong at qq dot com' ,
'website' => 'http://www.chenyixin.com',
)
$json_string = json_encode($arr>); $obj = json_decode ($json_string);
print_r($obj>?>) $obj->name, natürlich können Sie es auch in ein Array konvertieren, um es einfach aufzurufen:
$json_string = json_encode($arr); ; , seine Funktion kommt zum Vorschein, wenn Sie mit der Rezeption interagieren. Sehen wir uns an, wie ich Javascript verwende, um dieses Zeichen zu verwenden:
Weisen Sie diese Zeichenfolge oben direkt einer Variablen zu und sie wird zu einem Javascript-Array (Fachbegriff: Es sollte nicht als Array bezeichnet werden). , aber aufgrund der PHP-Gewohnheiten nenne ich es zum besseren Verständnis einfach ein Array. Auf diese Weise können Sie arr problemlos durchqueren oder tun, was Sie wollen. Ich habe AJAX noch nicht erwähnt, oder? Ja, denken Sie darüber nach: Wenn der vom Server zurückgegebene Antworttext eine JSON-Zeichenfolge anstelle von XML verwendet, wäre es dann nicht sehr praktisch für das Front-End-Javascript, ihn zu verarbeiten? So wird Hundehautpflaster angewendet.
Während ich dies schreibe, gibt es tatsächlich keinen großen Unterschied zwischen JSON und XML, abgesehen von den unterschiedlichen Datenspeicherformaten, aber ich werde unten einen Punkt erwähnen. Obwohl es wenig mit XML zu tun hat, kann es die breitere Anwendung von JSON veranschaulichen, also domänenübergreifende Datenaufrufe. Aus Sicherheitsgründen unterstützt AJAX keine domänenübergreifenden Aufrufe. Es ist sehr mühsam, Daten unter verschiedenen Domänennamen aufzurufen. Obwohl es Lösungen gibt (Stone erwähnte Proxys in seinem Vortrag, ich verstehe es nicht, aber ich weiß es). gelöst werden). Ich habe zwei Dateien geschrieben, die ausreichen, um domänenübergreifende Aufrufe zu demonstrieren.
Hauptdatei index.html
Die angepasste Datei „profile.php“
< ;?php
$arr = array(
'name' => 'Chen Yixin',
'nick' => 'Deep Space',
'contact' => array(
'email' => 'shenkong at qq dot com',
'website' => 'http://www.chenyixin.com',
)
); ;
echo "getProfile($json_string)";
Wenn index.html Profile.php aufruft, wird der JSON-String natürlich generiert und als Parameter übergeben Der Spitzname wird in das Div eingefügt. Auf diese Weise wird eine domänenübergreifende Dateninteraktion abgeschlossen.