首页 > 解决方案 > 如何通过使用 AJAX 和 PHP 进行迭代将 JSON 数据保存到新的 JSON 文件?

问题描述

我有带有侧边栏的简单电影编辑器,用户只需将元素拖放到右侧用户可以根据需要编辑此元素并将数据保存到 JSON,我希望当用户单击保存它时应该创建一个新文件和保存新数据。

到目前为止,这就是我所拥有的

HTML

        <div class="col-2 save-details">
          <div id="save-block">
            <button type="button" class="btn btn-success btn-save">Save</button>
          </div>
        </div>

这是保存文件的js

var moviesblocks =null;

$(document).ready(function(){

$.getJSON('moviesblocks.json', function (data) {

    moviesblocks = data.moviesblocks;
    console.log(moviesblocks);

});

$("#main-btn-save").on("click", function () {

    var moviesparams = JSON.stringify({
        moviesblocks: moviesblocks
    });

    $.ajax({
            type: 'POST',
            data: {
                moviesparams: moviesparams
            },
            url: 'save_movies_block.php',
            success: function (data) {
                    $('#msg').html(data).fadeIn('slow');
                    $('#msg').delay(2000).fadeOut('slow');
            },
            error: function () {
                    $('#error-msg').html(data).fadeIn('slow');
                    $('#error-msg').delay(2000).fadeOut('slow');
            }
    });

    console.log(moviesparams);
});

})

这是处理该过程的php文件

<?php
if(isset($_POST['moviesparams'])){
    $moviesparams = json_decode($_POST['moviesparams']);
    // do whatever checks you need on $moviesparams to verify valid data
    $success = file_put_contents("moviesblocks.json", json_encode($moviesparams));
    if($success === false){
        echo "sorry , something is wrong";
        die();
    }else{
        echo "Data successfully saved";
        die();
    }
} else {
    echo "nic";
}

$data=file_get_contents("data.json");
$result=json_decode($data);
?>

正如您现在在用户单击保存后看到的,将其保存到此文件

moviesblocks.json

现在我想当用户点击保存时,它应该保存到新文件moviesblocks1.json而不是moviesblocks.json

这是一个现场演示现场演示

我怎样才能达到我想要的?

标签: javascriptphphtmljsonajax

解决方案


如果您不想使用数据库,则需要再创建一个文件来维护文件版本号。每次您想创建新文件时,请从此 version.txt 文件中获取最新版本号并将其附加到文件名中。例如:moviesblocks1.json、moviesblocks2.json。

创建新文件后,从 version.txt 更新版本。这将帮助您下次创建新的版本号。


推荐阅读