gpt4 book ai didi

php - 如何将json模型对象保存到php mysql数据库

转载 作者:行者123 更新时间:2023-11-29 01:56:17 25 4
gpt4 key购买 nike

这是我的第一篇文章,所以如果我遗漏任何内容,请耐心等待:)。

我正在使用来自 GoJS 的 go-debug.js 库在浏览器上制作一些图表,但我遇到了保存选项的问题。该图生成一个 JavaScript 对象,您可以将其转换为 Json 并通过此命令将其传递给数据库 myDiagram.model.toJson() 。当我按下保存按钮时,我想使用 Ajax 方法将图表保存到 PhP,然后保存到 mySQL 数据库中。

感谢您的帮助!

这是我的保存脚本,但我不明白为什么它不起作用。

  window.onload = function(){


jQuery(document).ready(function(){
$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: 'savemodel.php',
data: {json: JSON.stringify(modelJson)},
dataType: 'json'
})

.done( function( data ) {
console.log('done');
console.log(data);
})
.fail( function( data ) {
console.log('fail');
console.log(data);
})
});

//return modelJson;



}
function load() {
myDiagram.model = go.Model.fromJson(document.getElementById("mySavedModel").value);
// loadDiagramProperties gets called later, upon the "InitialLayoutCompleted" DiagramEvent
}


function loadDiagramProperties(e) {
var pos = myDiagram.model.modelData.position;
if (pos) myDiagram.position = go.Point.parse(pos);
}



}

我的 php 代码是:

      <?php 

header('Content-Type: application/json');
include 'config.php';
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);

$session_id=$_SESSION['sess_user_id']; // User session id

$modelJson = $_POST['json'];




$sql = "INSERT INTO c_map
(ref_num, members_id, title, description, ingredients)
VALUES (NULL, '$session_id', 'title', 'description',
'".mysql_real_escape_string($modelJson)."');";


mysqli_query($connection, $sql);





?>

例如。命令 myDiagram.model.toJson(); 的产物;这是一个有 2 个 child 的 TreeMap ,看起来像这样:

{ "class": "go.GraphLinksModel",
"modelData": {"position":"-545.114064532096 -44.69966023522102"},
"nodeDataArray": [
{"key":"Alpha"},
{"key":"N"},
{"key":"N2"}
],
"linkDataArray": [
{"from":"Alpha", "to":"N"},
{"from":"Alpha", "to":"N2"}
]}

我引用了 GoJs 站点的模型保存文档:

GoJS does not require you to save models in any particular medium or format. But because this is JavaScript and JSON is the most popular data-interchange format, we do make it easy to write and read models as text in JSON format.

Just call Model.toJson to generate a string representing your model. Call the static method Model.fromJson to construct and initialize a model given a string produced by Model.toJson. Many of the samples demonstrate this -- search for JavaScript functions named "save" and "load". Most of those functions write and read a TextArea on the page itself, so that you can see and modify the JSON text and then load it to get a new diagram. But please be cautious when editing because JSON syntax is very strict, and any syntax errors will cause those "load" functions to fail.

JSON formatted text has strict limits on the kinds of data that you can represent without additional assumptions. To save and load any data properties that you set on your node data (or link data), they need to meet the following requirements:

the property is enumerable and its name does not start with an underscore (you can use property names that do start with an underscore, but they won't be saved) the property value is not undefined and is not a function (JSON cannot faithfully hold functions) the model knows how to convert the property value to JSON format (numbers, strings, JavaScript Arrays, or plain JavaScript Objects) property values that are Objects or Arrays form a tree structure -- no shared or cyclical references Model.toJson and Model.fromJson will also handle instances of Point, Size, Rect, Spot, Margin, Geometry, and non-pattern Brushes. However we recommend that you store those objects in their string representations, using those classes' parse and stringify static functions.

Because you are using JavaScript, it is trivial for you to add data properties to your node data. This allows you to associate whatever information you need with each node. But if you need to associate some information with the model, which will be present even if there is no node data at all, you can add properties to the Model.modelData object. This object's properties will be written by Model.toJson and read by Model.fromJson, just as node data objects are written and read.

最佳答案

你不需要json_decode这个JSON,因为它正在变成一个对象。
删除这部分:

$directions = json_decode($_POST['json']);
var_dump(directions); // here's an error btw

并将其更改为:

$directions = $_POST['json'];

然后以文本模式保存即可。
不要忘记转义它:

$sql = "INSERT INTO c_map 
(ref_num, members_id, title, description, ingredients)
VALUES (NULL, '$session_id', 'title', 'description',
'".mysql_real_escape_string($directions)."');";

关于php - 如何将json模型对象保存到php mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28026760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com