如何将json模型对象保存到php mysql数据库
作者:互联网
这是我的第一篇文章,因此,如果我错过了任何内容,请耐心等待:).
即时通讯使用GoJS的go-debug.js库在浏览器上制作了一些图表,但即时通讯存在保存选项问题.此图产生一个JavaScript对象,您可以通过此命令myDiagram.model.toJson()将其转换为Json并将其传递给数据库.我想按保存按钮使用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();的产生;这是一个有两个孩子的树形图,如下所示:
{ "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进行json_decode,因为它已成为对象.
删除此部分:
$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,mysql,json,ajax,gojs 来源: https://codeday.me/bug/20191011/1895799.html