保存和恢复没有JSON的javascript对象

时间:2013-11-03 20:30:41

标签: javascript php mysql object canvas

我正在处理的网站上有一个页面,该页面名为“create.php”。它允许用户通过鼠标单击在HTML5画布上创建名为“实体”的javascript对象。我希望将创建的实体保存到mysql数据库,然后在网站的另一个页面上重新创建,该页面称为“restore.php”。保存和恢复javascript实体非常重要,而不仅仅是画布状态,因此canvas save()和restore()不是选项。到目前为止,我所使用的系统在以下链接中有所体现:

http://codepen.io/Tejay/pen/yDxFu

如您所见,我可以在“创建”页面上保存和恢复实体。但是,该站点要求将实体保存在mysql数据库中并在还原页面上重新创建。我在restore.php上重新创建实体时遇到问题 我将每个实体转换为一个序列化对象,将其推送到一个数组,然后在create.php上将此数组作为文本类型插入mysql(我也尝试过blob但没有成功):

saveToStore = function(serializedEntities) {
    var save = confirm("Are you sure you want to save this canvas to the database?");
        if(save == true) {
            store = serializedEntities;
            window.location.href="save_canvas.php?store=" +store;
    }
};

然后将序列化对象数组插入到save_canvas.php上的mysql中:

$canvas = $_GET['store'];
function save_canvas($canvas) {
    if(isset($_GET['store'])) {
        $canvas = $_GET['store'];

        mysqli_query($con, "INSERT INTO canvas (canvas_id, canvas_array) VALUES ('','$canvas')");
    }
}

save_canvas($canvas);

然后在restore.php上检索数组,retore.php上的javascript代码几乎与create.php相同,但将php $ store变量传递给javascript除外:

<?php $store = $data['canvas_array']; ?>

<script>
var store = '<?php echo $store; ?>';
createFromStore = function() {
    if(store.length > 0) {
        for(var i=0;i<store.length;i++)
            addEntity(store[i]);
    }
}
else {
alert('nothing in store');
}
};

createFromStore(store);
</script>

将序列化数组存储到mysql会返回[object Object]。出于调试目的,我使用JSON.stringify存储了对象数组,在restore.php上检索它并打印出其内容。不幸的是,由于循环引用,JSON不是一个选项。我觉得我没有正确地将存储的数组传递给createFromStore,但我不知道我做错了什么。任何建议都表示赞赏。

0 个答案:

没有答案