это мой первый пост, так что если я что-то пропустил, наберитесь терпения :).
я использую библиотеку go-debug.js из GoJS для создания некоторых диаграмм в браузере, но я работаю проблема с возможностью сохранения. Эта диаграмма создает объект 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, чтобы построить и инициализировать модель с учетом строки, созданной Model.toJson. Многие примеры демонстрируют это — ищите функции JavaScript с именами «сохранить» и «загрузить». Большинство этих функций записывают и читают TextArea на самой странице, чтобы вы могли видеть и изменять текст JSON, а затем загружать его для получения новой диаграммы. Но будьте осторожны при редактировании, потому что синтаксис JSON очень строг, и любые синтаксические ошибки приведут к сбою этих «загрузочных» функций.
Текст в формате JSON имеет строгие ограничения на типы данных, которые вы можете представить без дополнительных предположений. Чтобы сохранять и загружать любые свойства данных, которые вы установили для данных узла (или данных ссылки), они должны соответствовать следующим требованиям:
свойство является перечислимым, и его имя не начинается с подчеркивания (вы можете использовать имена свойств, которые начинаются с подчеркивания, но они не будут сохранены) значение свойства не является неопределенным и не является функцией (JSON не может точно хранить функции) модель знает, как преобразовать значение свойства в формат JSON (числа, строки, массивы JavaScript или простые объекты JavaScript) значения свойств, которые являются объектами или массивами, образуют древовидную структуру — без общих или циклических ссылок Model.toJson и Model .fromJson также будет обрабатывать экземпляры кистей Point, Size, Rect, Spot, Margin, Geometry и non-pattern. Однако мы рекомендуем хранить эти объекты в их строковых представлениях, используя статические функции синтаксического анализа и строковой обработки этих классов.
Поскольку вы используете JavaScript, вам несложно добавить свойства данных к данным вашего узла. Это позволяет вам связать любую информацию, которая вам нужна, с каждым узлом. Но если вам нужно связать с моделью какую-то информацию, которая будет присутствовать даже при отсутствии данных узла вообще, вы можете добавить свойства в объект Model.modelData. Свойства этого объекта будут записаны Model.toJson и прочитаны Model.fromJson, точно так же, как записываются и считываются объекты данных узла.
"modelJson"
, тогда как я полагаю, вы хотели преобразовать значение модели в строку из своего приложения? - person RobV   schedule 19.01.2015edit
под вашим вопросом, комментарии не являются хорошим форматом для добавления дополнительного кода. - person RobV   schedule 19.01.2015