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

时间:2015-01-19 14:21:34

标签: php mysql ajax json gojs

这是我的第一篇文章,所以如果我遗漏了什么,请耐心等待:)。

我正在使用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个孩子的树形图,如下所示:

{ "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不要求您在任何特定介质中保存模型   格式。但因为这是JavaScript和JSON是最受欢迎的   数据交换格式,我们确实可以轻松地编写和读取模型   作为JSON格式的文本。

     

只需调用Model.toJson即可生成表示模型的字符串。   调用静态方法Model.fromJson来构造和初始化a   给出由Model.toJson生成的字符串的模型。许多样本   演示这个 - 搜索名为“save”的JavaScript函数   “加载”。大多数这些函数在页面上编写和读取TextArea   本身,以便您可以查看和修改JSON文本,然后加载它   获得一个新的图表。但是在编辑时请小心谨慎,因为JSON   语法非常严格,任何语法错误都会导致那些“加载”   功能失败。

     

JSON格式的文本对您的数据类型有严格的限制   可以代表没有额外的假设。保存和加载任何   您在节点数据(或链接数据)上设置的数据属性   需要满足以下要求:

     

该属性是可枚举的,其名称不以a开头   下划线(您可以使用以。开头的属性名称   下划线,但它们不会被保存)属性值不是   undefined并不是一个函数(JSON不能忠实地持有   函数)模型知道如何将属性值转换为JSON   格式(数字,字符串,JavaScript数组或纯JavaScript   对象)属性值是对象或数组形成树   结构 - 没有共享或循环引用Model.toJson和   Model.fromJson还将处理Point,Size,Rect,Spot的实例,   边距,几何和非图案画笔。不过我们建议这样做   您可以使用这些对象将这些对象存储在其字符串表示中   classes的解析和stringify静态函数。

     

因为您使用的是JavaScript,所以添加数据非常简单   属性到您的节点数据。这允许你关联任何东西   每个节点需要的信息。但如果你需要联想一些   模型的信息即使没有也会出现   根据节点数据,您可以向Model.modelData添加属性   宾语。该对象的属性将由Model.toJson编写   由Model.fromJson读取,就像编写节点数据对象一样   读取。

0 个答案:

没有答案