全局JS文件:只执行一次JSON调用

问题描述:

我相信我犯了一个可怕的错误。我有一个全球性的JS文件,我通过脚本标记包含在每个JSP页面上。全局JS文件:只执行一次JSON调用

<script type="text/javascript" src="/myGlobalJS.js" ></script> 

在那个JS文件中,我打电话来获取JSON;但我只希望执行一次。每次加载新的JSP页面时,它都会执行。

var myObj = (function(){ 
    var myData = {}; 

    return{ 
     setData:function(data){ 
      myData = data.response; 
    } 
    }; 
})(); 


(function(){ 
    $.getJSON(jsonUrl) 
     .done(function(data){ 
      myObj.setData(data.response.data); 
     }); 
})(); 

我该如何纠正这个优雅?

更新:我现在可以看到我的想法的错误。我正在考虑将这些JSP页面作为应用程序,当应用程序加载时,它应该只执行一次获取这个JSON文件。跨这些JSP页面没有持久的UI状态。所以我认为我不得不加载该文件并在每个需要的页面上调用它。这是真的?

+0

每个执行一次? – James

+0

曾执行过一次。我现在看到了这个愚蠢的行为。基本上,我只希望这个用户在网站上执行一次。因此,如果它已经在一个JSP页面上执行,那么我不希望它在任何其他页面上执行。 – fumeng

+1

U可以在localstorage中添加变量,以及一些if语句来验证数据是否先前已加载。 – loadaverage

我已经找到了答案在这里:

Global vars across pages

HTML5支持sessionStorage的,将存储变量只要会话使用。唯一的缺点是,它似乎没有完全支持跨所有浏览器存储对象。但它绝对是一个漂亮的解决方案。