我应该在使用JSON时使用JSON和最佳做法吗?

时间:2012-06-12 04:55:38

标签: jquery ajax json

我正在使用Silverstripe开发网站,该网站的一部分需要与此类似的交互式地图 - http://www.straytravel.asia/south-east-asia-bus-travel/

我目前正在使用AJAX访问每个对象的所有信息(包括天数,价格,通行证名称等),这些信息会在onmouseover上发生变化,但是在浏览多个项目时负载会成为问题。

我想在本地存储每个传递的信息,这样我就可以更快地检索信息。我没有在项目中使用JSON,我想知道它是否是最佳解决方案。我目前能够将所有传递信息检索为JSON对象,但我仍然不知道应该如何使用它。存储为javascript变量并通过一些jQuery调用访问信息是一个好主意还是我应该以不同的方式处理这个问题?有没有人能找到我可以解决的好例子?

由于

1 个答案:

答案 0 :(得分: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();
           }
     }); 
}