Ursprünglicher Link: http://hi.baidu.com/lostdays/blog/item/8d76c300ec4e3c15738b65fa.html
Gesamtkatalog
Was, Warum, Wie
Was
Warum
Wie
PHP-Serialisierungssyntax
Beispiel für die PHP-Serialisierung
In JavaScript in JSON serialisieren – mit json2.js
Serialisieren Sie in JSON in JavaScript – mit
der PHP-Funktion „prototype.js“ und der JSON
-Funktion „json_decode“.
json_encode-Funktion
Beispiel für die json_decode-Funktion
Beispielpraxis für die json_encode-Funktion
bietet
eine Erklärung des echten Wissenshintergrunds
Frontend-JavaScript-Teil
Backend-PHP-Teil
Was, Warum, Wie
Was
Ok, liebe Freunde, lasst uns die Reise dieses neuen Konzepts beginnen. Vielleicht hat nicht jeder dem Thema Serialisierung viel Aufmerksamkeit geschenkt. Tatsächlich entstand es an dem Tag, an dem ich beiläufig das PHP-Handbuch durchblätterte und fand diese Serialisierung. Danach war ich gelangweilt und habe ein WordPress-Plugin erstellt. Zu diesem Zeitpunkt habe ich die Serialisierung verwendet und festgestellt, dass sie in bestimmten Situationen tatsächlich sehr praktisch ist.
Lassen Sie uns zunächst die Serialisierung erklären: Einfach ausgedrückt ist Serialisierung der Prozess der Konvertierung von Variablen in einen Bytestrom. Die Einführung der Serialisierung löst das Problem der Objektspeicherung und -übertragung. Ich habe beispielsweise ein Objekt in JavaScript erstellt und möchte dieses Objekt nun in der serverseitigen Datenbank speichern von Objekten wird häufig verwendet. Bei der Serialisierung von JavaScript müssen wir JSON (JavaScript Object Notation) erwähnen, ein leichtes Datenaustauschformat. Für Menschen leicht zu lesen und zu schreiben und für Maschinen leicht zu analysieren und zu generieren. Es basiert auf der Programmiersprache JavaScript, einer Teilmenge des Standards ECMA-262, 3. Auflage – Dezember 1999. JSON verwendet ein völlig sprachunabhängiges Textformat, verwendet aber auch Konventionen ähnlich der C-Sprachfamilie (einschließlich C, C++, C#, Java, JavaScript, Perl, Python usw.). Diese Eigenschaften machen JSON zu einer idealen Datenaustauschsprache.
Normalerweise wird JSON mit XML verglichen (wir werden später erklären, dass XML eine strenge Struktur hat, während JSON einfach und leicht zu verwenden ist). Das Programm zur Analyse, da es ein Objekt leicht in die Form eines Zeichenstroms umwandeln kann, wie zum Beispiel den folgenden Code:
Code:
{"type": "human", "name": "hanguofeng", "age": 22 }
ist ein JSON-Ausdruck, der ein Objekt speichert. Wie stellen wir es in einem Objekt wieder her? Es ist ganz einfach, wie folgt:
Code:
var animal_str = '{"type": "human", "name": "hanguofeng", "age":22}';
var animal2=eval('(' + animal_str + ')');
Wir verwenden die JavaScript-Auswertungsfunktion, um den JSON-Ausdruck zu bedienen und den Wert zurückzugeben, um ein Objekt zu erhalten Bewundern Sie die Denkweise des Schöpfers des JSON-Formats. Ursprünglich wollte ich über Serialisierung sprechen, aber ich habe „aus Versehen“ JSON erwähnt und so viel darüber gesprochen. Haha, bin ich vom Thema abgekommen? Nein, die PHP-Serialisierung ist JSON sehr ähnlich. Ein PHP-Serialisierungsausdruck lautet wie folgt:
Code:
a:3:{s:4:"Typ";s:5:"Mensch";s:4:"Name";s:10:"hanguofeng";s:3:"Alter";s:2:" 20";}
Seine Struktur ähnelt in gewisser Weise der von JSON. Tatsächlich ist dieser Ausdruck das serialisierte Ergebnis des folgenden Arrays:
Code:
$tier =
Array
(
„Typ“ => „Mensch“,
„name“ => „hanguofeng“,
„Alter“ => „20“
);
OK, die obige Einführung soll Ihnen nur eine grobe Vorstellung davon geben, was Serialisierung und JSON sind. Sie müssen sich hier nicht zu sehr mit dem Code befassen. Wir werden es später im Detail erklären Serialisierungsänderung verwenden.
Warum
die Serialisierung zum ersten Mal eine Erleichterung für die Datenübertragung war, habe ich ein Objekt in JavaScript erstellt. Wie soll ich das tun? Tatsächlich geht es darum: „Wie übermittle ich ein Objekt vom Browser an den Server?“ Während dieses Übertragungsprozesses wissen wir, dass nur der Zeichenstrom tatsächlich eindimensional (flach) übertragen werden kann. , aber viele Objekte. Wenn das zu übertragende Objekt eine Zeichenfolge ist, können wir es direkt als übertragenen Inhalt verwenden Wenn ich Sie zum Beispiel am Telefon frage, wie Sie heißen, sagen Sie mir, dass Sie Zhang San oder Li Si heißen, und wenn ich Sie frage, wie sehen Sie aus? Mir wurde gesagt, dass das Medium, über das wir Daten übertragen, oft das gleiche ist wie diese Telefonleitung, die nur Zeichenströme übertragen kann, und dass der Prozess, mit dem wir Objekte beschreiben, tatsächlich ein Serialisierungsprozess ist .
Darüber hinaus kann die Serialisierung auch zur dauerhaften Speicherung von Objekten verwendet werden. Vielleicht haben Sie, wie ich, einmal darüber nachgedacht, ein Objekt in einem bestimmten Feld der Datenbank zu speichern, und Ihr Datenbankfeld ist nicht erforderlich Um auf ein spezielles Format eingestellt zu werden, setzen Sie es einfach auf Varchar (wenn das Objekt groß ist, müssen Sie es natürlich möglicherweise auf Text setzen).
Wie
PHP-Serialisierungssyntax
Okay, ich denke, Sie haben die Fragen nach dem Was und Warum verstanden. Am Ende dieses Abschnitts werden wir über etwas theoretischeres sprechen, nämlich wie man PHP zum Serialisieren und Deserialisieren von Daten verwendet und wie man JavaScript serialisiert Objekte (das heißt, sie in das JSON-Format ändern) und wie man sie deserialisiert. Schließlich erfahren Sie, wie Sie eine Beziehung zwischen JSON und PHP-Serialisierung herstellen.
PHP stellt uns zwei Funktionen für Serialisierungs- und Deserialisierungsoperationen zur Verfügung: serialize() und unserialize() Sie sind für PHP4 und PHP5 geeignet. Sie werden unten erklärt:
serialize()
(PHP 4, PHP 5, PECL axis2). :0.1.0-0.1.1)
serialize – Einen speicherbaren Darstellungswert abrufen
string
serialize (mixed $value)
Holen Sie sich einen speicherbaren Darstellungswert. Diese Funktion wird verwendet, um PHP-Variablenwerte und -Strukturen verlustfrei zu speichern oder zu übertragen.
Wenn Sie den serialisierten Wert zurück in eine PHP-Variable konvertieren müssen, können Sie die Funktion unserialize() verwenden.
Parameterwert
Das heißt, der Ausdruck wird serialisiert. serialize() verarbeitet alle Typen außer Ressourcenzeigern, und Sie können sogar ein Array serialisieren, das Elemente enthält, die auf sich selbst zeigen. Die von Ihnen serialisierten Arrays oder Objekte, die Schleifenzeiger enthalten, werden weiterhin gespeichert, andere Zeiger gehen jedoch verloren.
Beim Serialisieren eines Objekts versucht PHP, zunächst seine Memberfunktion __sleep() aufzurufen. Dies ermöglicht beispielsweise eine abschließende Bereinigung vor der Serialisierung des Objekts. Wenn das Objekt mit der Funktion unserialize() wiederhergestellt wird, wird in ähnlicher Weise die Memberfunktion __wakeup() aufgerufen.
Der Rückgabewert
gibt eine Zeichenfolge zurück, die einen Byte-Stream-Ausdruck des Objekts enthält, der an einer beliebigen Stelle gespeichert werden kann.
unserialize()
(PHP 4, PHP 5, PECL axis2:0.1.0-0.1.1)
Einen PHP-Variablenwert aus einem gespeicherten Ausdruck
abrufen
,gemischt unserialize ( string $str )
unserialize() nimmt einen einfachen Typ einer serialisierten Variablen und wandelt ihn zurück in einen PHP-Variablenwert.
Parameter
str
serialisierter String Wenn die deserialisierte Variable ein Objekt ist, versucht PHP nach erfolgreicher Wiederherstellung der Objektstruktur automatisch, die Memberfunktion __wakeup() des Objekts auszuführen (falls vorhanden).
unserialize_callback_func-Direktive: Sie können die Callback-Funktion festlegen, die während dieses Prozesses ausgeführt werden soll, wenn eine undefinierte Klasse während der Deserialisierung instanziiert werden soll (um zu vermeiden, dass ein unvollständiges Objekt „__PHP_Incomplete_Class“ entsteht). Sie können php.ini, ini_set() oder .htaccess verwenden, um „unserialize_callback_func“ zu definieren. Es wird aufgerufen, wenn eine undefinierte Klasse instanziiert wird. Um diese Funktion zu deaktivieren, setzen Sie sie einfach auf leer.
Der Rückgabewert
gibt den konvertierten Wert zurück, der eine boolesche Variable, eine reelle Zahl, eine Gleitkommazahl, ein String, ein Array oder ein Objekt sein kann.
Wenn die eingehende Zeichenfolge nicht deserialisiert werden kann, wird FALSE zurückgegeben und ein NOTICE-Fehler ausgegeben.
(Das Obige ist aus dem PHP-Handbuch übersetzt.)
Serialisierung und Deserialisierung des
PHP-Serialisierungsinstanzarrays.
Erstellen Sie zunächst die Datei „sample1.php“. Erstellen Sie einen Hash Array:
Code:
<?php
$tier =
Array
(
„Typ“ => „Mensch“,
„name“ => „hanguofeng“,
„Alter“ => „20“
);
?>
Um den Wert dieses Arrays zu testen, können Sie die Funktion print_r() verwenden, um das Array auszugeben. Die Ausgabeergebnisse lauten wie folgt:
Code:
Array
(
[Typ] => Mensch
[Name] => Hanguofeng
[Alter] => 20
)
Dann lassen Sie es uns serialisieren. Der Serialisierungscode lautet wie folgt:
Code:
<?php
$tier =
Array
(
„Typ“ => „Mensch“,
„name“ => „hanguofeng“,
„Alter“ => „20“
);
$animal_ser=serialize($animal);
echo($animal_ser);
?>
Hier serialisieren wir das Array $animal, speichern die zurückgegebene serialisierte Zeichenfolge in der Variablen $animal_ser und geben sie aus. Das Ausgabeergebnis ist:
Code:
a:3:{s:4:"Typ";s:5:"Mensch";s:4:"Name";s:10:"hanguofeng";s:3:"Alter";s:2:" 20";}
Lassen Sie uns einfach diese Zeichenfolge analysieren:
a:3 gibt an, dass es sich um ein Array-Objekt (a) handelt, das über drei integrierte Objekte (3) verfügt.
Der Teil innerhalb der geschweiften Klammern ist eine durch Kommas getrennte Liste von Objektausdrücken. Am Beispiel von s:4:"type" handelt es sich um eine Zeichenfolge mit einer Länge von 4 Ziffern (4) und einem Wert von "type". , das ist der Schlüssel des ersten Elements des Hash-Arrays.
Wir werden in den folgenden Abschnitten nicht auf Details eingehen. Sie können versuchen, verschiedene Objekte selbst zu serialisieren und zu sehen, wie die serialisierte Zeichenfolge aufgebaut ist.
Schauen wir uns die Deserialisierung des Arrays an, dh die Wiederherstellung der oben generierten serialisierten Zeichenfolge in einem Array. Der Code lautet wie folgt:
Code:
<?php
$animal_ser='a:3:{s:4:"type";s:5:"human";s:4:"name";s:10:"hanguofeng";s:3:"age";s :2:"20";}';
$animal = unserialize($animal_ser);
print_r($animal);
?>
In der ersten Zeile gehen wir davon aus, dass der Wert von $animal_ser die oben erhaltene serialisierte Zeichenfolge ist. In der zweiten Zeile wird die Zeichenfolge im Startarray wiederhergestellt und schließlich das Array $animal ausgegeben time Die Ausgabe ist dieselbe wie die ursprüngliche Array-Ausgabe am Anfang dieses Abschnitts, das heißt:
Code:
Array
(
[Typ] => Mensch
[Name] => Hanguofeng
[Alter] => 20
)
Auf diese Weise haben wir die Deserialisierung des Arrays abgeschlossen.
Wissen erweitern – Serialisierung und Deserialisierung von benutzerdefinierten Objekten
Das Serialisieren von Arrays ist eine grundlegende Operation. Bei der tatsächlichen Programmierung können wir jedoch häufig andere Arten von Variablen serialisieren, z. B. Benutzerdefinierte Objekte werden von uns selbst geschrieben (in classa gespeichert). .inc):
Code:
<?php
Klasse A {
var $one = 1;
Funktion show_one() {
echo $this->one;
}
}
?>
Wir erstellen eine Instanz der Klasse und serialisieren die Instanz im folgenden Code:
Code:
<?php
include("classa.inc");
$a=neues A;
echo(serialize($a));
?>
Der Ausgabeinhalt ist derzeit:
Code:
O:1:"A":1:{s:3:"one";i:1;}
Insgesamt gibt diese serialisierte Zeichenfolge den aktuellen Status des Objekts aus, d. h. der Wert von i ist 1. Lassen Sie uns die Details einzeln analysieren. O:1: Da die aktuelle Variable ein benutzerdefiniertes Objekt ist, ist das kennzeichnende Zeichen „O“, was Objekt bedeutet. Das folgende „A“ gibt an, von welcher Klasse die Variable eine Instanz ist, hier ist es Klasse A. In den geschweiften Klammern stehen die Namen und Werte der einzelnen Attribute der Instanz. Dann deserialisieren wir es:
Code:
<?php
include("classa.inc");
$s = 'O:1:"A":1:{s:3:"one";i:1;}';
$a = unserialize($s);
$a->show_one();
?>
Zu diesem Zeitpunkt wird „1“ ausgegeben, dh die Methode show_one () der Klasse A wird aufgerufen. Sie können feststellen, dass die Klassenmethode zwar nicht in der serialisierten Zeichenfolge der Instanz enthalten ist, wir sie aber dennoch aufrufen können, nachdem wir sie deserialisiert haben. Diese Funktion wird in PHP4 und höher unterstützt (natürlich müssen Sie die Klassendefinitionsdatei einschließen). classa.inc).
Hinweis: Sie können sich auf den Abschnitt „Sprachreferenz->Klassen und Objekte->Serialisieren von Objekten – Objekte in Sitzungen“ des PHP-Handbuchs beziehen.
Serialisieren in JSON in JavaScript – mit json2.js
Es gibt keine integrierte Methode, um Objekte direkt in JavaScript zu serialisieren. Natürlich können Sie selbst eine schreiben, aber ich empfehle Ihnen trotzdem dringend, hier faul zu sein und vorgefertigte JSON-Komponenten zu verwenden Die offizielle Website www.json.org bietet eine Codebibliothek für die JSON-Serialisierung von JavaScript-Objekten – json2.js, die Sie hier herunterladen können.
Nachdem Sie die Datei json2.js erhalten haben, können Sie diese Datei öffnen. Der erste Teil der Datei enthält eine beträchtliche Menge an Kommentarinformationen. Wenn Ihr Englisch gut genug ist, können Sie diesen Abschnitt weglassen und einfach auf die Kommentare der Datei verweisen. Okay, wenn Sie als Programmierer genug Buchstaben gesehen haben und meine chinesischen Schriftzeichen + Buchstaben sehen möchten, können Sie weiter unten fortfahren.
Übersetzen Sie einfach diesen Kommentar: Bitte beziehen Sie sich auf http://www.JSON.org/js.html. Diese Datei erstellt ein globales Objekt JSON, das zwei Methoden enthält:
Code:
JSON.stringify(Wert, Whitelist)
value ein beliebiger JavaScript-Wert, normalerweise ein Objekt oder Array
Whitelist Ein optionaler Array-Parameter, der verwendet wird, um zu bestimmen, wie der Objektwert serialisiert wird. Diese Methode generiert JSON-Text aus einem JavaScript-Wert. Bei der Serialisierung gibt es basierend auf dem optionalen Parameter Whitelist drei Möglichkeiten:
Wenn ein Objekt über eine toJSON-Methode verfügt, rufen Sie diese Methode auf und der Rückgabewert der toJSON-Methode wird serialisiert.
Andernfalls, wenn der optionale Whitelist-Parameter ein Array ist, werden die Elemente im Array verwendet, um die Mitglieder des Objekts für die Serialisierung auszuwählen.
Andernfalls werden alle Mitglieder des Objekts serialisiert, wenn der Whitelist-Parameter nicht verwendet wird.
Wenn ein Wert keine JSON-Darstellung hat, z. B. undefiniert oder eine Funktion, wird er nicht serialisiert. In Objekten werden solche Werte ignoriert und in Arrays durch Null ersetzt.
JSON.stringify(undefiniert) gibt undefiniert zurück. Das Datum wird auf das angegebene ISO-Datum umgerechnet.
Beispiel:
Code:
var text = JSON.stringify(['e', {pluribus: 'unum'}]);
//Text ist '["e",{"pluribus":"unum"}]'
JSON.parse(text, filter)
Diese Methode analysiert einen JSON-Text und generiert eine Komponente oder ein Array, die möglicherweise eine SyntaxError-Ausnahme auslösen.
Der optionale Filterparameter ist eine Funktion, die die Ergebnisse filtert und transformiert. Er akzeptiert jeden Schlüssel und Wert und sein Rückgabewert wird verwendet, um den Quellwert zu ersetzen. Wenn der empfangene Wert zurückgegeben wird, bleibt das Ergebnis unverändert. Wenn es undefiniert zurückgibt, wird das Mitglied gelöscht.
Beispiel:
Code:
//Parse den Text und konvertiere seinen Wert in ein Datum, wenn ein Schlüssel die Zeichenfolge „Datum“ enthält
myData = JSON.parse(text, function (key, value) {
return key.indexOf('date') >= 0 ? new Date(value) : value;
});
Das obige Einführungs-Tutorial hat Ihnen ein grundlegendes Verständnis für die Verwendung von json2.js vermittelt. Ich werde hier nicht näher auf diese Datei eingehen. Wenn Sie einfach einen JSON-Text analysieren möchten, können Sie eval verwenden () Funktion, die Funktion ist eine integrierte Funktion von JavaScript. Um beispielsweise den im Fall von JSON.stringify generierten JSON-Text zu analysieren, können Sie Folgendes verwenden:
Code:
var myE = eval('["e",{"pluribus":"unum"}]');
um das Objekt myE zu erhalten.
In JavaScript in JSON serialisieren – verwenden Sie „prototyp.js“.
Wenn Sie wie ich Open-Source-JavaScript-Frameworks in Ihren Projekten verwenden möchten, können Sie möglicherweise auf die Verwendung der Datei „json2.js“ verzichten. Hier ist beispielsweise „prototyp.js“. Die Datei kann unter http://www.prototypejs.org heruntergeladen werden. Da es in diesem Artikel nicht um das JavaScript-Framework geht, gehe ich davon aus, dass Sie bereits ein gewisses Verständnis für die Verwendung von Prototype.js haben.
prototyp.js stellt die toJSON-Methode für Object-Objekte bereit. Sie können die Object.toJSON()-Methode verwenden, um die Serialisierung von Objekten zu erreichen, zum Beispiel:
Code:
var cat=
{
Name: „Hallo Kitty“,
Höhe: „6 Äpfel“
}
alarm(Object.toJSON(cat));
//Es erscheint ein Dialogfeld mit dem Inhalt {"name": "hellokitty", "height": "6 apples"}
Darüber hinaus gibt es in Prototype.js zusätzliche JSON-Unterstützung, hauptsächlich das Parsen des JSON-Inhalts in der Ajax-Rückgabeanforderung im Ajax-Objekt. Dies hat vorerst nichts mit unseren Inhalten zu tun und wird auch nicht erneut eingeführt.
PHP und JSON
Oben haben wir die Methode der Objektserialisierung in PHP und die Methode der Serialisierung von Objekten in JSON in JavaScript kennengelernt. Sie werden sich wahrscheinlich fragen, warum ich die beiden zusammenfüge, da ihre Syntax jedoch tatsächlich nicht genau dieselbe ist. In PHP ist es möglich, JSON-Text zu deserialisieren, und es ist auch möglich, PHP-Objekte in JSON anstelle von Text im PHP-Stil zu serialisieren. Dies wird hauptsächlich durch die beiden Funktionen json_decode und json_encode erreicht. Es ist zu beachten, dass diese beiden Funktionen nur in PHP 5 >= 5.2.0 unterstützt werden. Wenn Sie ein Programm schreiben möchten, das in der PHP4-Umgebung läuft, dann sind diese beiden Funktionen erforderlich kann nicht verwendet werden.
json_decode-
Funktionssyntax
gemischt json_decode ( string $json [, bool $assoc] )
Holen Sie sich einen JSON-codierten Text und konvertieren Sie ihn in den PHP-
Variablenparameter
JSON
JSON-codierter Text
Assozi
Rückgabewert
ein assoziatives Array.
Wenn der optionale Assoc-Parameter TRUE ist, wird eine assoziative Array
-Syntaxzeichenfolge
json_encode
(gemischter $-Wert)
zurückgegeben.
Diese Funktion gibt einen JSON-Ausdrucksparameterwert
eines
Werts
zurück
Der zu kodierende Wert kann ein beliebiger Parametertyp sein, mit Ausnahme der Ressource. Diese Funktion funktioniert nur im UTF-8-Kodierungsformat.
Gibt
den kodierten JSON-Text bei Erfolg zurück.
Die
folgenden beiden Beispiele basieren auf einem unserer Szenarios Annahme, das heißt, wir haben ein Benutzerregistrierungsmodul, das „objektorientiert“ arbeitet. In der Funktionsinstanz json_decode ändern wir die Registrierungsinformationen des Benutzers im Vordergrund in ein Klassenattribut und übergeben es dann an den Hintergrund php-Datei (der Einfachheit halber wird Ajax hier nicht verwendet). Im json_encode-Beispiel verweisen wir auf eine js-Datei in der HTML-Datei, die Adresse verweist auf die PHP-Datei und geben das json-codierte Benutzerobjekt in der PHP-Datei aus (der Einfachheit halber generieren wir auch direkt ein Objekt, ohne die Informationen von zu erhalten der Datenbank) und Ausgabe in HTML.
Okay, schauen wir uns zunächst die Front-End-Seite json_encode.htm an. Diese Seite imitiert ein Formular. Beim Absenden wird die JavaScript-Funktion ausgelöst und der Formularinhalt generiert als Benutzerobjekt festgelegt ist, generieren Sie JSON-Text und übergeben Sie ihn im POST-Modus an die Hintergrunddatei json_encode.php. Verwenden Sie in der Datei js_encode.php die Funktion json_decode, um den JSON-Text in ein PHP-Objekt zu analysieren und auszugeben.
Okay, schauen wir uns zuerst die Datei json_encode.html an. Der Dateicode lautet wie folgt:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<Kopf>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>json_decode</title>
<script src="json2.js" type="text/javascript"></script>
<script type="text/javascript">
Funktion JSON_test(o){
var user = {
name:document.getElementById('txt_name').value,
email:document.getElementById('txt_email').value,
Passwort:document.getElementById('txt_name').value
}
var json_string = JSON.stringify(user);
document.getElementById('txt_json').value=json_string;
Alert("Klicken Sie auf OK, um das Formular abzuschicken");
o.submit();
}
</script>
</head>
<Körper>
<form id="form1" name="form1" method="post" action="json_encode.php" onsubmit="JSON_test(this)">
<label for="txt_name">Name</label>
<p>
<input type="text" name="txt_name" id="txt_name" />
</p>
<label for="txt_email">E-Mail</label>
<p>
<input type="text" name="txt_email" id="txt_email" />
</p>
<p>
<label for="txt_password">Passwort</label>
</p>
<p>
<input type="text" name="txt_password" id="txt_password" />
</p>
<p>
<input type="text" name="txt_json" id="txt_json" />
<label for="button"></label>
<input type="submit" name="button" id="button" value="JSON" />
</p>
</form>
</body>
</html>
Wenn das Formular gesendet wird, wird die JavaScript-Funktion JSON_text() ausgelöst. Diese Funktion erstellt zunächst einen JavaScript-Objektbenutzer, setzt dessen Namens-, E-Mail- und Passwortattribute auf die Werte des entsprechenden Formulars und verwendet dann JSON.stringify Methode der Datei json2.js zu Es wird in JSON-Text json_string konvertiert und schließlich wird das ausgeblendete Feld festgelegt (um es hier deutlich zu machen, zeige ich dieses ausgeblendete Feld in Form eines Textfelds an). Der Wert von txt_json ist json_string. und das Formular wird abgesendet.
Gehen Sie als Nächstes wie folgt zur Datei json_encode.php:
Code:
<?php
$json_string = $_POST["txt_json"];
if(ini_get("magic_quotes_gpc")=="1")
{
$json_string=stripslashes($json_string);
}
$user = json_decode($json_string);
echo var_dump($user);
?>
Rufen Sie in dieser Datei zunächst den Wert des POST-Formularfelds txt_json in der Datei json_encode.html ab, fügen Sie ihn in die Variable $json_string ein und beurteilen Sie dann, ob die aktuelle PHP-Einstellung magic_quotes_gpc=On ist, also die eingehenden doppelten Anführungszeichen Die Bedeutung wird konvertiert, sodass die Funktion json_decode sie nicht analysieren kann. Daher müssen wir die Escape-Funktion aufheben. Verwenden Sie dann die Funktion json_decode, um den JSON-Text in ein Objekt zu konvertieren, speichern Sie ihn in der Variablen $user und verwenden Sie schließlich echo var_dump($user);, um das Objekt zu sichern:
Code:
object(stdClass)#1 (3) {
["Name"]=>
string(10) „hanguofeng“
["E-Mail"]=>
string(18) " [email protected] "
["Passwort"]=>
string(10) „hanguofeng“
}
besteht
die Funktionsinstanz json_encode
immer noch aus zwei Teilen, nämlich json_enode.html und json_encode.php.In der Datei json_decode.html ähnelt das Formular grundsätzlich der Datei json_decode.html, der Unterschied besteht jedoch darin, dass wir diesmal den JSON-Text des entsprechenden Benutzers aus der Datei json_encode.php abrufen möchten. Schauen wir uns diese PHP-Datei an Erstens:
Code:
<?php
Klassenbenutzer{
public $name="";
public $email="";
public $password="";
};
$myUser = neuer Benutzer;
$myUser->name="hanguofeng";
$myUser->email=" [email protected] ";
$myUser->password="hanguofeng";
$json_string = json_encode($myUser);
?>
var user = <?php echo($json_string)?>;
Diese Datei erstellt zunächst die Klasse „user“, ruft dann eine Instanz der Benutzerklasse „myUser“ ab und legt ihren Benutzernamen, ihre E-Mail-Adresse und ihr Passwort fest. Anschließend verwendet sie die Funktion „json_encode“, um sie in JSON-Text zu konvertieren, speichert sie in der Variablen „$json_string“ und schließlich gibt einen Teil des JavaScript-Codes aus, um die globale Variable user in JavaScript zu erstellen.
Als nächstes müssen wir die Datei json_encode.php in die Datei json_encode.html einführen und die verschiedenen Attribute des Benutzerobjekts wie folgt abrufen:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<Kopf>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>json_encode</title>
<script src="json_encode.php" type="text/javascript"></script>
</head>
<Körper>
<form id="form1" name="form1" method="post">
<label for="txt_name">Name</label>
<p>
<input type="text" name="txt_name" id="txt_name" />
</p>
<label for="txt_email">E-Mail</label>
<p>
<input type="text" name="txt_email" id="txt_email" />
</p>
<p>
<label for="txt_password">Passwort</label>
</p>
<p>
<input type="text" name="txt_password" id="txt_password" />
</p>
</form>
<script type="text/javascript" >
document.getElementById('txt_name').value=user.name;
document.getElementById('txt_email').value=user.email;
document.getElementById('txt_password').value=user.password;
</script>
</body>
</html>
In dieser Datei müssen Sie auf zwei Punkte achten. Der erste besteht darin, dass wir die Datei json_encode.php als JavaScript-Datei mit diesem Code einführen:
Code:
<script src="json_encode.php" type="text/javascript"></script>
Der zweite Punkt ist:
Wir fügen nach dem Textfeldcode JavaScript-Code hinzu, bedienen das Wertattribut des Textfelds und setzen seinen Wert auf den entsprechenden Wert des Benutzerobjekts.