2016-12-09 2 views
1

EDIT: Meine Fehlerprüfung zeigt, dass der PHP ausgeführt wird, aber wenn ich meine .JSON-Datei überprüfen, ist es immer noch die gleiche wie zuvor.Schreiben eines JSON-Objekts in eine vorhandene .json-Datei

Ich entschuldige mich im Voraus, da dies zuvor gefragt wurde, aber ich habe Stunden damit verbracht, verschiedene Dinge auszuprobieren, und keiner hat funktioniert. Hoffentlich könnte dies jemandem in einer ähnlichen Situation helfen. Ich versuche, einen neuen Eintrag an mein vorhandenes JSON-Objekt von Benutzereingaben anzufügen und schreibe das aktualisierte JSON-Objekt zurück in die Datei. Der letzte Teil ist, was mir Ärger macht.

Hier Ajax Ich bin mit meinem json Objekt in eine PHP-Datei

$.getJSON("http://existing.json", function(data){ 
    //append new entry to previous json array 
    data['posts'].push(objectt); 
    //confirming that new object is correct 
    console.dir(data); 
    //Sending json object to .php file so it can write to .json file 
     $.ajax({ 
      type : "POST", 
      url : "json.php", 
      //data : data, this was changed to 
      data : {json:data}, //by the suggestion of suggested by madalin ivascu 
      dataType: 'json' 
     }); 

Der obige Codeblock senden ausführt und keine Fehler in der Konsole angezeigt. Hier ist meine Json.php-Datei. Nachdem der nächste Codeblock ausgeführt wurde, hat meine .json-Datei nicht den neuen Eintrag.

$json = $_POST['json']; 

if ($_POST['json']) 
{ 
    $file = fopen('simple.json','w+'); 
    fwrite($file, $json); 
    fclose($file); 
    echo: "File was updated"; 
} 
else 
{ 
    // user has posted invalid JSON, handle the error 
     print "Error json was null"; 
} 

Antwort

3

ändern data : {json:data},

Return etwas aus dem php

$json = $_POST['json']; 

if (json_decode($json) != null) 
{ 
    $file = fopen('simple.json','w+'); 
    fwrite($file, $json); 
    fclose($file); 
    echo "File updated"; 
} 
else 
{ 
    // user has posted invalid JSON, handle the error 
     print "Error json was null"; 
} 
+0

Es ist wie die json_decode aussieht, ist null. Wenn ich console.dir (data) anrufe, heißt das, dass es ein Objekt in der Konsole ist. Ich kann den Code zur Verfügung stellen, der das Datenobjekt erzeugt, wenn Sie denken, dass das das Problem ist –

+0

ändern Sie die if-Bedingung, um zu prüfen, ob '$ _POST ['json']' existiert – madalinivascu

+0

Ich habe meine Op. Die if-Anweisung gibt true zurück, aber die .json-Datei wird immer noch nicht aktualisiert. –

Verwandte Themen