2016-04-15 4 views
0

Ich versuche, JSON-Datei auf dem Server auf Knopfdruck zu aktualisieren. Also, wenn ich auf die Schaltfläche #update Ich sammle Werte aus Eingabefeldern und fügen Sie sie zu JSON-Objekt, dann habe ich dieses JSON-Objekt an controller.php gesendet. Aber wie mit diesem Json-Objekt umzugehen, löschen Sie die alte JSON-Datei und und erstellen Sie eine neue JSON-Datei mit dem JSON-Objekt darin.PHP Handle Json gesendet POST und neu schreiben bestehenden Json mit dem neuen

Hiermit kann der Pfad JSON-Datei heißt: js/currencies.json

JS:

function ajaxPost(obj){ 
     $.ajax({ 
       type: "POST", 
       dataType: "json", 
       url: "controller.php", 
       data: {myData:obj}, 
       contentType: "application/json; charset=utf-8", 
       success: function(data){ 
        alert('Items added'); 
       }, 
       error: function(e){ 
        console.log(e.message); 
       } 
     }); 
    } 

    $(document).ready(function(){  
       $('#update').on('click', function(){ 
        var objrates = 
        { 
         "EURbuy" : $('#eurbuy').val(), 
         "EURsell" : $('#eursell').val(), 
         "USDbuy" : $('#usdbuy').val(), 
         "USDbuy" : $('#usdbuy').val() 
        } 
        ajaxPost(objrates); 
       });                                                       
      }); 

PHP:

<?php 
    $data[] = $_POST['myData']; 
    $inp = file_get_contents('js/currencies.json'); 
    $tempArray = json_decode($inp); 
    array_push($tempArray, $data); 
    $jsonData = json_encode($tempArray); 
    file_put_contents('js/currencies.json', $jsonData); 
?> 

Der Code php withouth Fehler funktioniert, aber die .json Datei wird nicht durch die neuen Werte ersetzt

+0

Sie können dies mit auf den Speicherort auf dem Server direkt schreiben [file_put_contents] [1]: [1]: http://php.net/manual/en/function.file-put-contents.php – vishwakarma09

+0

so etwas wie das? file_put_contents ("js/currency.json", $ obj); ? –

+0

Welchen Wert hat Ihre $ json-Variable? – madalinivascu

Antwort

0

Verwenden Sie json_encode, um das geänderte Objekt zurückzugeben oder zu speichern in eine Datei mit file_put_contents

<?php 
    $obj = $_POST['myData']; 
    $obj['key'] = 'newVal';//edith the values based on key 
    echo $json = json_encode(array('newobj'=>$obj));//echo the json object if you want 
    file_put_contents('js/currencies.json',$json); //replace the json with new json in the file 
?> 

Hinweis: Sie können auch die Dateinamen in dem Ajax-Pass und abrufen, um die es anhängen verändern die Daten:

data: {myData:obj,filename:'js/currencies.json'}, 

php die URL erhalten und ändern die Datei:

$filename= $_POST['filename']; 
file_put_contents($filename,$json); 
+0

ok, aber ich sehe nicht den Dateipfad zu der alten .json-Datei fehlt etwas –

+0

übergeben Sie die URL an die Ajax, um es zu bearbeiten – madalinivascu

+0

können Sie erklären, was jede Zeile im wirklich neu zu PHP Ich bekomme nicht was "Schlüssel 'in dieser Situation will ich die gesamte .json Datei durch die neue JSON ersetzen, die von AJAX –