Javascript 关闭浏览器时正在擦除的数据。

Javascript 关闭浏览器时正在擦除的数据。,javascript,Javascript,我有一个存储比赛结果的游戏板,我不明白为什么当浏览器关闭时数据(通过下拉菜单输入的比赛结果)会被删除。是否有一种方法可以让我的结果在服务器运行期间保持不变 结果在main.js中显示如下: $.post('/postScores', results, function(scores){ var gameBoard = ""; for(var j=0;j<scores.length;j++){ gameBoard+= '<tr>';

我有一个存储比赛结果的游戏板,我不明白为什么当浏览器关闭时数据(通过下拉菜单输入的比赛结果)会被删除。是否有一种方法可以让我的结果在服务器运行期间保持不变

结果在
main.js中显示如下:

$.post('/postScores', results, function(scores){
  var gameBoard = "";
      for(var j=0;j<scores.length;j++){
          gameBoard+= '<tr>';

          for(var k=0;k<5;k++){             
            gameBoard += '<td>'+scores[k][j]+'</td>';
          }
          gameBoard += '</tr>';
      }

      $("#grid").append(gameBoard);

  });

完整程序:

当您使用javascript修改当前查看的页面时,这些更改本质上是临时的。下次加载同一页面时,它将再次从浏览器加载HTML结构,并以原始状态呈现给您。这确实有一定的意义,因为您希望浏览器呈现服务器发送给您的页面,而不是其他内容


如果要对UI进行永久性更改,则需要将状态存储在服务器上,并将更改包括在html响应中,或者将状态保存在客户端(例如,在Cookie或localstorage中),然后在加载页面后从客户端应用修改

像这样使用
localStorage

var yourData = '';
localStorage.setItem('gameData',yourData);
取回

var retrievedData = localStorage.getItem('gameData');

请记住,您不能将数组存储在
localStorage
中,因此必须在保存到
localStorage
之前进行字符串化,并在检索数据时进行解析。还请记住,在
localStorage
中存储容量不能超过5MB,这对您来说应该不是问题。如果要在浏览器缓存之外持久化,则必须使用某种数据库。

服务器上存储的
结果具体在哪里?看起来您只是将它们反射回客户端。如果您只关心在服务器运行时保留数据,则可以使用内存中的db。服务器在发送初始内容时必须发送更新的结果,因此结果数组必须存在于app.post之外,以便将其存储在服务器上?我想在服务器上执行此操作吗服务器端还是客户端?
localStorage
严格来说是客户端的东西。如果它是具有实际价值的数据,您可能会希望将该数据存储在服务器端(例如,如果用户从不同的计算机重新安装并使用您的应用程序)。在这种情况下,服务器的响应html需要反映新的html结构。因此,在我的程序中,在main.js中,var yourData=scores//从服务器传入的分数数组?那么当我检索它时,我必须在for循环之后检索它?然后执行类似$(“网格”).append(retrievedData)的操作?您可以这样做,或者您可以在服务器端逻辑中将更改后的html内容附加到网格中。
var retrievedData = localStorage.getItem('gameData');