我正在使用Silverstripe开发网站,该网站的一部分需要与此类似的交互式地图 - http://www.straytravel.asia/south-east-asia-bus-travel/
我目前正在使用AJAX访问每个对象的所有信息(包括天数,价格,通行证名称等),这些信息会在onmouseover上发生变化,但是在浏览多个项目时负载会成为问题。
我想在本地存储每个传递的信息,这样我就可以更快地检索信息。我没有在项目中使用JSON,我想知道它是否是最佳解决方案。我目前能够将所有传递信息检索为JSON对象,但我仍然不知道应该如何使用它。存储为javascript变量并通过一些jQuery调用访问信息是一个好主意还是我应该以不同的方式处理这个问题?有没有人能找到我可以解决的好例子?
由于
答案 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();
}
});
}