当前位置: 首页 > 面试题库 >

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

谯德佑
2023-03-14
问题内容

这是我的第一篇文章,因此,如果我错过任何内容,请耐心等待:)。

我使用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不需要您以任何特定的介质或格式保存模型。但是因为这是JavaScript,而JSON是最流行的数据交换格式,所以我们确实使以JSON格式的文本形式编写和读取模型变得容易。

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

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

该属性是可枚举的,并且其名称不是以下划线开头(您可以使用以下划线开头的属性名称,但不会被保存)该属性值并非未定义且不是函数(JSON无法如实保存)函数)模型知道如何将属性值转换为JSON格式(数字,字符串,JavaScript数组或纯JavaScript对象),这些属性值是对象或数组形成树形结构-
没有共享或循环引用Model.toJson和Model
.fromJson还将处理“点”,“大小”,“矩形”,“斑点”,“边距”,“几何”和“非图案画笔”的实例。但是,我们建议您使用这些类的解析和字符串化静态函数将它们存储在它们的字符串表示形式中。

因为使用的是JavaScript,所以将数据属性添加到节点数据很简单。这使您可以将所需的任何信息与每个节点相关联。但是,如果您需要将某些信息与模型相关联,即使根本没有节点数据,这些信息也将存在,则可以向Model.modelData对象添加属性。该对象的属性将由Model.toJson编写,并由Model.fromJson读取,就像写入和读取节点数据对象一样。


问题答案:

您不需要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)."');";


 类似资料:
  • 问题内容: 在数据库中,我想添加另一个对象,它是上述对象的副本。 假设我的桌子有一排。我想用不同的主键将第一行对象插入另一行。我怎样才能做到这一点? 问题答案: 需更改对象的主键并运行save()。 如果要自动生成密钥,请将新密钥设置为“无”。

  • 问题内容: 我已经创建了一个JSON文件,并且需要能够通过电子邮件与其他协作者共享该文件。但是,尽管在R工作区中有许多处理JSON对象的主题,但实际上没有资源讨论如何实际将JSON对象导出到.JSON文件。 这是一个简单的例子: 最后一行,尝试读取JSON文件,导致错误:“ fromJSON(file =“ export.JSON”)中的错误:意外字符’R’” 显然,save()函数并不是可行的方

  • 问题内容: 我想将一个对象保存到文件中,然后轻松地从文件中读取它。作为一个简单的示例,可以说我有以下3d数组: 是否有一个简单的Ruby API,无需编程解析器即可解释文件中的数据,就可以用来实现此目的?在示例中,我给出了一个简单的例子,但是随着对象变得越来越复杂,使对象持久化变得很烦人。 问题答案: 参见元帅:http : //ruby- doc.org/core/classes/Marshal

  • 问题内容: 这是我定义的一个类: 这就是我尝试保存s 数组的方式: 它没有用,这是我在控制台上看到的: 我是iOS新手,您能帮我吗? 第二版 我找到了一种保存数据的解决方案: 但是在使用以下代码加载数据时出现错误: 错误是: 我很确定我存档了Double,保存/加载过程存在问题 有什么线索吗? 问题答案: 从属性列表编程指南中: 如果属性列表对象是容器(即数组或字典),则其中包含的所有对象也必须是

  • 问题内容: 我看到过很多不同的文章,涉及到您应该以何种方式将对象序列化到文件,并且所有这些在本质上在执行方式和最佳实践方面存在冲突。因此,这就是我要保存的内容: 我们可以假设configArgs的大小已知,我需要制作一个文件,这就是到目前为止的内容。 问题答案: 好吧,我想,您想将对象直接写入文件 我只是提供了重要的代码。通过异常处理来实现。