1

これは私の最初の投稿なので、何か不足している場合はしばらくお待ちください:)。

GoJSの go-debug.js ライブラリを使用してブラウザーでいくつかの図を作成していますが、保存オプションで問題が発生しています。このダイアグラムは、Json に変換できる JavaScript オブジェクトを生成し、このコマンド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 によって生成された文字列を指定してモデルを構築および初期化します。サンプルの多くはこれを示しています。「save」および「load」という名前の JavaScript 関数を検索してください。これらの関数のほとんどは、ページ自体で TextArea の書き込みと読み取りを行うため、JSON テキストを表示および変更し、それを読み込んで新しい図を取得できます。ただし、JSON 構文は非常に厳密であり、構文エラーがあるとこれらの「ロード」機能が失敗するため、編集するときは注意してください。

JSON 形式のテキストには、追加の仮定なしで表現できるデータの種類に厳しい制限があります。ノード データ (またはリンク データ) に設定したデータ プロパティを保存およびロードするには、次の要件を満たす必要があります。

プロパティは列挙可能であり、その名前はアンダースコアで始まりません (アンダースコアで始まるプロパティ名を使用できますが、保存されません) プロパティ値は未定義ではなく、関数ではありません (JSON は忠実に保持できません)関数) モデルは、プロパティ値を JSON 形式 (数値、文字列、JavaScript 配列、またはプレーンな JavaScript オブジェクト) に変換する方法を知っています オブジェクトまたは配列であるプロパティ値はツリー構造を形成します -- 共有参照または循環参照はありません Model.toJson および Model .fromJson は、Point、Size、Rect、Spot、Margin、Geometry、非パターン ブラシのインスタンスも処理します。ただし、これらのクラスの parse および stringify 静的関数を使用して、これらのオブジェクトを文字列表現で格納することをお勧めします。

JavaScript を使用しているため、データ プロパティをノード データに追加するのは簡単です。これにより、必要な情報を各ノードに関連付けることができます。ただし、ノード データがまったくない場合でも存在するモデルに何らかの情報を関連付ける必要がある場合は、Model.modelData オブジェクトにプロパティを追加できます。このオブジェクトのプロパティは、ノード データ オブジェクトの書き込みと読み取りと同様に、Model.toJson によって書き込まれ、Model.fromJson によって読み取られます。

4

1 に答える 1