php mysql存json格式化,如何将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代码是:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值