Objekt mit boolean Attribute per $.ajax senden
Ich habe eine kleine PHP-Applikation, die liest Metadaten aus einem JSON-File.
Diese Daten schreibt PHP-Code in ein Html-Dokument als Javascript-Objekt, damit diese in der Seite verfügbar sind.
echo 'var aMetadata=' . json_encode($o->aMetadata, JSON_PRETTY_PRINT) .';';
Wenn ich im Formular die Daten bearbeite und mein aktualisiertes Javascript ans PHP zurücksende, dann in der Form:
var aMetadata={'title': 'Hello world' } $.ajax({ type: "POST", url: sSaveUrl, data: { function: "setMetadata", value: aMetadata, // <<<<< meine Metadaten } }).done(function () { // ... });
Auf Seite PHP wurde $_POST[”value”] der Methode setMetadata() übergeben:
public function setMetadata($aNewMetadata) { if(!is_array($aNewMetadata)){ echo "ERROR: not an array"; return false; } $this->aMetadata=$aNewMetadata; return $this->saveMetadata(); }
Das klappt soweit, bis … ja bis einmal ein boolean Wert übergeben werden soll. Es werden true/ false Werte als Strings in Form von “true”/ “false” vom $.ajax data-Wert gesendet, wenn man das Objekt direkt übergibt. Dann kann schonmal fies werden, wenn lauter korrupte Datensätze entstehen.
anclock auf Platz 1 der Wochendownloads
Weil ich ein paar PHP-Klassen auf phpclasses.org hinterlegt habe, habe ich nur mal mal vesuchsweise eine Javascript-Klasse in der Partnerseite jsclasses.org hinterlegt: meine Analog-Uhr.
Tja, und nun ist sie dort auf Platz 1. Unerwartet, aber trotzdem schön!
weiterführende Links: