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 可以很好地使用它(例如,使用.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();
           }
     }); 
}
于 2012-06-12T05:13:37.470 回答