2011-01-29 7 views
1

私は、多くのユーザーがログインし、自分の「サンドボックス」にドラッグ可能な「ノード」を作成する「サンドボックス」を作成しようとしています。私は毎回修正した後にアプリケーションを自動保存できるようにしたいと思っていますが、まずはまずMySQLのJavascriptオブジェクトを取得しようとしています。JSON/PHP/MysqlでJavascriptオブジェクトを保存すると、ユーザーの返品時にJavascriptオブジェクトを再ロードするにはどうすればよいですか?

私はJavascript、PHP、MySQLを初めて使いましたが、JSONはこのタスクのための私の親友のようです。ここではノードのラフな例です:

node1.pos 
node1.name 
node1.content 
node1.siblings 

* 注:実際のノードは、より多くの属性が、潜在的な機密情報と一部を収容します。

私の目標は、各ノードをドラッグしてドラッグしたり、兄弟や名前の変更などにリンクしたりして、ページを再訪問したときに、「サンドボックス」がすべての正しいデータが関連付けられている正しい位置。

私はキャンバスに表示される機能を扱うことができますが、MySQLとJavascriptの間でオブジェクトを移動することは私を混乱させるものです。メソッドを持つオブジェクトは問題を引き起こすでしょうか?

誰でも助けてくれる助けやアドバイス、参考資料がありますか?

+1

本当に答えはありますが、面白いことを考えてみましょう。https://github.com/zefhemel/persistencejs – fncomp

+0

"メソッドを持つオブジェクトで問題が発生するか_ _"はい。 JSONは関数をデータとして格納することができません。そのため、別の 'dataPacket'を作成しました。 _load.php_サービス用に投稿したコードで、サーバーが文字列を返すと、jQueryは自動的にJSONとして解析し(有効なJSONの場合のみ)、JavaScriptオブジェクトで終了します。 – Trinidad

答えて

3
  1. ユーザーが送信するデータを格納するWebサービスを作成することをお勧めします。 http://server.net/store.phpとしましょう。

  2. クライアントは、その後、いくつかのユーザーの資格情報と一緒に、意味のあるデータをJSONにシリアライズするためにJavaScriptを使用することになり...

    var dataPacket = { 
        userCredentials: 77777777, /* whatever is sensible */ 
        nodes: [ {id: 1, posX: 10, posY: 345 }, {id: 2, posX: 5, posY: 136} ] 
    }; 
    
  3. 次に、クライアントは、jQueryの+ AJAXを使用してサーバーにデータを送信します。 ..

    $.ajax({ 
        type: "POST", 
        url: "http://server.net/store.php", 
        dataType: "json", 
        data: dataPacket 
    }); 
    
  4. 次に、サーバー側でデータが有効なユーザーの資格情報をチェックされるだろうし、それを保存するために進むことができ、実際にはデータベースのいくつかの種類、受け取ったJSONエンコードされたデータ、中ただの文字列。

  5. データベースから読み取り、以前に格納されたデータを返すWebサービスを作成します。 http://server.net/load.phpとしましょう。ユーザーは、彼がデータを求めるためにJavaScriptを使用する前にクライアントをしていたものをロードする必要がある

  6. ...コードはjQueryのに依存し、ちょうど設けられていることが

    $.ajax({ 
        type: "POST", 
        url: "http://server.net/load.php", 
        dataType: "json", 
        data: { 
         userCredentials: 77777777, /* whatever is sensible */ 
        } 
        success: function(dataPacket) { 
         /* process the received dataPacket */ 
        } 
    }); 
    

注意一例として、私は実際にそれをテストしていない。


も参照してください:

・ホープ、このことができます。

神の祝福!

+0

ありがとうございます。私はUIのためにJQueryを使用しているので、他の場所で使用することは問題ではありません。あなたはユーザーの資格情報について詳しく説明できますか?これはユーザーがデータを送信する識別子ですか? – jlmakes

+1

資格情報は、ユーザー名と同じくらいシンプルにすることができます。より洗練されたものにするためには、login + passwordを受け取るログインサービスを作成し、(ユーザー名とパスワードの暗号化されたバージョンなどの)ソートの内部IDを返します。このIDは、常にユーザ名+パスワードの送信を避けるための資格情報として使用されます。だからあなたはちょうど最初にログイン情報を送信し、その後クライアントはサーバから返されたIDを使うだけです。しかし、それを処理する方がずっと良い方法があるかもしれません。 – Trinidad

1

私の頭の上からの提案:

保存は、その場で編集:

はあなたが明らかにしたいと思う(何もしないPHPページを作成しますが、ユーザーからのPOST要求を受け入れます無作為のデータでページにヒットすることはできませんが、それは別の問題です)。このページは、ユーザーからのAJAX要求を受け入れる責任があります。

jQueryのUIライブラリ(、特にのようなものを使用してサンドボックスページを作成する、新規作成の場合は事前に書いたものを使用してください)。これはPHPページで、AJAXの処理ページによってデータベースに既に格納されている値をロードします。 jQueryのdrag and drop methodsを使用すると、要素が移動されたときにいつでも検出できます。移動終了時に、jQueryの.ajax機能を使用して、エレメントと座標をajaxハンドリング・ページに送信します。

次回ユーザーがログインすると、必要に応じて要素を追加/配置するのは簡単です。

+0

http://labs.inversepenguin.comには、そこにMapboxと結合されたJquery UI Draggableと、「ノード」と「サンドボックス」があります。しかし、ノードにはjavascriptオブジェクトとの関連はありませんが、私はPHP処理ページにajaxを送信するというアイディアが好きです... POSTデータをいくつかの場所や方法でPOSTする必要があります。 – jlmakes

+0

私たちはほとんど同じ考えを持っていました;) – Trinidad

関連する問題