2012-06-12 62 views
1

我正在開發使用Silverstripe一個網站,該網站的部分需要類似這樣的交互式地圖 - http://www.straytravel.asia/south-east-asia-bus-travel/使用JSON時,我應該使用JSON和最佳做法嗎?

我目前正在使用AJAX來訪問每個對象的所有信息(包括,天,價格

,通過名稱等)改變onmouseover哪些工作正常,但負載成爲瀏覽多個項目時的問題。

我想在本地存儲每個通行證的信息,這將允許我更快地檢索信息。我沒有在項目中使用JSON,我想知道它是否是最好的解決方案。我目前能夠將所有傳遞信息作爲JSON對象進行檢索,但我被卡在應該如何使用它。將一個javascript變量存儲並通過一些jQuery調用訪問信息是否是個好主意,還是應該以不同的方式處理這個問題?有沒有人有我可以解決的很好的例子?

謝謝

回答

0

JSON作爲消息格式是AJAX的事實標準。它更加簡潔並且可以很容易地解析成JavaScript對象,而jQuery可以很好地使用它(例如,使用.ajax並將dataType設置爲「json」將指示jQuery嘗試自動將結果消息從JSON解析到對象中)。

一旦您收到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(); 
      } 
    }); 
} 
相關問題