情境:
MVC网页获取包含大量数据的JSON对象。在点击按钮(存在相当数量的按钮)时,我希望重复使用这个JSON对象并选择所需的JSON属性(无需向服务器发出请求)。
由于它不是HTML5,因此无法使用浏览器本地存储。目前,我在全局变量上存储JSON对象并重复使用它。
是否有任何优雅的选项可用于在客户端存储和重复使用返回的JSON对象?
情境:
MVC网页获取包含大量数据的JSON对象。在点击按钮(存在相当数量的按钮)时,我希望重复使用这个JSON对象并选择所需的JSON属性(无需向服务器发出请求)。
由于它不是HTML5,因此无法使用浏览器本地存储。目前,我在全局变量上存储JSON对象并重复使用它。
是否有任何优雅的选项可用于在客户端存储和重复使用返回的JSON对象?
只需缓存数据,无需将JSON存储在全局变量中。我相信你可以在MVC应用程序中找到一个作用域为本地变量的地方。你需要实现带有回调的数据读取器函数。使用缓存,它看起来像这样:
var getData = (function(){
var cache;
var loading = false;
var callbacks = [];
return function(callback) {
if (typeof cache != "undefined")
callback(cache);
else {
callbacks.push(callback);
if (!loading) {
loading = true;
doSingleHeavyAjaxCall(options, function success(data) {
cache = data;
for (var cb; cb = callbacks.shift();)
cb(cache);
});
}
}
};
})();
getData(function callback(data){...})
,它只会触发一个ajax请求。getData
。它所做的一切都是您每次需要数据时必须完成的工作。将缓存公开的好处是什么? - Bergi<head>
部分编写此代码即可。<script type="text/javascript">
window.jsonData = {};
</script>
然后无论您在哪里检索数据,只需更新该对象即可。
<script type="text/javascript">
$.ajax(..., function(data) {
window.jsonData = data;
});
</script>
然后你可以在页面上的任何代码中使用它。
<script type="text/javascript">
console.dir(jsonData);
</script>
var json = {};
$('#mygrid').data('mydata', json);
你可以稍后检索它
var json = $('#mygrid').data('mydata')
jQuery data() 方法文档:http://api.jquery.com/data/
.data()
方法可以检索html5样式的数据属性,但它不会将数据存储在元素属性中(它在内部维护自己的结构并为您跟踪元素关联)。 - nnnnnndata
来设置值时,它使用的是jQuery缓存,而不是属性。 - gdoron.data()
不会将数据存储在 DOM 对象上。你上面提供的链接并没有说明它这样做,jQuery 的文档 也是如此。如果你需要 "证明",只需考虑到.data()
可以存储(更多)不仅仅是字符串... - nnnnnn