在页面刷新期间存储数据

时间:2016-02-16 15:54:34

标签: jquery

让我尽量简单地说明这一点。我有一段代码解析动态网站并检索JSON对象。该网站每半小时更新一次数据。所以我已经以某种方式编写了我的代码,它使用

每半小时刷新一次
<meta http-equiv="refresh" content="1800" />
<script>

      function requestCrossDomain(site, callback) {
      if (!site) {
          alert('No site was passed.');
          return false;
      }
      var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=xml&callback=?';
      $.getJSON(yql, cbFunc);
      function cbFunc(data) {
          if (data.results[0]) {
              data = data.results[0].replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
                  window[callback](data);
          } else throw new Error('Nothing returned from getJSON.');
      }
  }

      var url = 'https://www.emcsg.com/marketdata/priceinformation';

      requestCrossDomain(url, 'someFunction');



function someFunction(results){
var html = $(results);




        var table_pre = html.find(".view72PeriodsWrapper").find(".previous");
        var table_cur = html.find(".view72PeriodsWrapper").find(".current");
        var table_fut = html.find(".view72PeriodsWrapper").find(".future");
        var previous_tab = []
        for ( var i = 0; i < table_pre.length; i++ ) {
            var previous = ($(table_pre[i])).html();
            previous_tab.push(previous.split('<td>').join('').split('</td>'));

        }
        var current_tab = []
        for ( var i = 0; i < table_cur.length; i++ ) {
            var current = ($(table_cur[i])).html();
            current_tab.push(current.split('<td>').join('').split('</td>'));

        }
        var future_tab = []
        for ( var i = 0; i < table_fut.length; i++ ) {
            var future = ($(table_fut[i])).html();
            future_tab.push(future.split('<td>').join('').split('</td>'));

        }
        var jsonObject = JSON.stringify(previous_tab) ;
        var jsonObject2 = JSON.stringify(current_tab);
        var jsonObject3 = JSON.stringify(future_tab);


        jsonObject = jsonObject.concat(jsonObject2, jsonObject3);

        $('#json').text(jsonObject);
      }     

</script>

现在,因为我的程序将继续运行,所以每次程序刷新时,数据都会被覆盖。我想知道一种存储以前数据的方法,并将其附加到数组中以进行每次连续刷新。

我尝试通过本地存储执行此操作,但由于我的整个代码设置为每半小时重新运行一次,因此本地存储在刷新期间也会被覆盖。

现在,我如何存储我的数据?

编辑:上传了我的整个代码

1 个答案:

答案 0 :(得分:2)

如果您没有覆盖旧数据,本地存储应该可以正常工作。

var data = [];
if (window.localStorage['my-data'] !== undefined) {
  data = JSON.parse(window.localStorage['my-data']);
}
data.push(myNewData);
window.localStorage['my-data'] = JSON.stringify(data);