0

ajax呼び出しを使用してデータを変更する場合、データベースとWebページ間の同期を実現する最良の方法は何ですか? 例を挙げると、コメントを追加するためのフォームがあり、これを非同期で動作させたいとします。したがって、そのフォームをデータベースに送信する JS コードを作成します。ページを更新せずにこの新しいデータをユーザーに表示するためのベスト プラクティスは何ですか? 現時点では、この問題に対する 3 つの解決策を考えることができます。

  1. サーバーから OK メッセージを受け取った後、このデータを処理してページ上の適切な要素に挿入するコールバックに JS コードを入れます。

  2. サーバーからの応答として、要素に表示する必要があるすべてのデータを送信し、JS を使用してすべてを挿入します。

  3. サーバーからの応答として、処理された新しいデータのみが送信され、適切な場所に挿入されるため、1 と 2 の混合のようなものです。

1 のコードの重複は好きではありません。つまり、処理ロジックを 2 回実装する必要があります。サーバーから送信されるデータのオーバーヘッドのため、2.も好きではありません。3 については、私はこのアプローチが最も気に入っていますが、データの送受信のオーバーヘッドがまだいくらかあります。ほとんどの場合、これらのオーバーヘッドがシステムの機能に影響を与えないことはわかっていますが、この問題に対する他の解決策があるかどうか、またデータが同期していることを確認するためのベスト プラクティスは何かを知りたいです。

4

1 に答える 1

1

backboneJSが行うように、Models と Collections の使用を検討することをお勧めします。これは一種の「データベースのローカル コピー」です。まず、モデルは、todo リストの上位 10 項目など、表示用にいくつかのレコードをフェッチします。モデルには、その中のデータを操作できる CRUD メソッドがあります。

次に、インターフェース用に、ビュー用に別のコードを用意します。これらのビューはモデルに接続し、CRUD を実行するだけでなく、現在のモジュール インターフェイスまたはインターフェイスの別の部分からのモデル データの変更をリッスンします。ページの一部がデータを変更すると、同じモデルにフックされている残りの部分が通知されます。モデルは何でもかまいません。データベース内のテーブルの 1 つまたは組み合わせを表す場合があります。

同様に、そのモデルには AJAX 同期機能があります。その中で変更されたすべてのデータは、AJAX 呼び出しを介してサーバーに反映されます。その呼び出しが完了したら、それに応じて更新するようにすべてのフックされたインターフェイスに通知します。データはモデルに含まれているため、サーバーに変更を送信して成功をリッスンするだけで済みます。サーバーからのライブデータについては、モデルにポーリング機能を作成してデータを更新できます。変更がある場合は、すべてのフックされたインターフェースに通知します。

于 2012-04-24T10:20:58.303 に答える