1

私は Silverstripe を使用してサイトを開発しています。サイトの一部には、これに似たインタラクティブなマップが必要です - http://www.straytravel.asia/south-east-asia-bus-travel/

現在、AJAX を使用して各オブジェクト (日数、価格、パス名などを含む) のすべての情報にアクセスしています。これらの情報は onmouseover で変更されますが、複数のアイテムを閲覧するときに負荷が問題になります。

各パスの情報をローカルに保存して、情報をより迅速に取得できるようにしたいと考えています。プロジェクトで JSON を使用したことがなく、それが最善の解決策であるかどうか疑問に思っています。現在、すべてのパス情報を JSON オブジェクトとして取得できますが、それをどのように使用すればよいかわかりません。javascript変数として保存し、いくつかのjQuery呼び出しを介して情報にアクセスすることは良い考えですか、それともこの問題に別の方法でアプローチする必要がありますか? 誰かが私が取り組むことができる良い例を持っていますか?

ありがとう

4

1 に答える 1

0

メッセージ形式としての JSON は、AJAX のデファクト スタンダードです。これはより簡潔で、JavaScript オブジェクトに容易に解析され、jQuery は非常にうまく機能します (たとえば、 を使用して「json」に.ajax設定すると、 jQuery は、生成されたメッセージを JSON からオブジェクトに自動的に解析しようとします)。dataType

JSON メッセージを受信して​​オブジェクトに解析すると、「ストレージ」は主観的なものになります。再度ダウンロードするのを避けるために、既にダウンロードしたオブジェクトへの参照を単に保持している場合は、マップ オブジェクトを検索して参照を保持するだけです。

何らかの識別子を使用して情報を検索していると仮定すると、大まかな例は次のとおりです。

var infocache = {}; // keeps copy of previously retrieved info messages

function displayInfo(infoId) { // called when you want to display info, using some identifier
   var callback = function() {
       var info = infocache[infoId];

       // do something with your info object... display in HTML template or whatever.
   };

   if (infocache[infoId]) { 
     callback();
     return;
   }

   $.ajax({
      url:'/myapi/info/get', 
      data: {id: infoId }, 
      dataType:'json', 
      type:'POST', 
      success: function(result) {
             infocache[infoId] = result;
             callback();
           }
     }); 
}
于 2012-06-12T05:13:37.470 に答える