每当我的js数据文件发生变化时如何刷新页面

时间:2016-08-25 12:07:55

标签: javascript jquery html json

所以我得到了一个名为'data.js'的本地文件,其中包含各种数据。

  var json={ 
  'city': 'madrid',
  'zip':'21212',
  'street':'bergstrasse',
  'house':'15',

};
for(key in json)
{
  if(json.hasOwnProperty(key))
    $('input[name='+key+']').val(json[key]);

}
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

<form action="options.php" method="post" >

<input type="text" name="city" placeholder="stadt" >  
<br>
<input type="text" name="zip" placeholder="zip" >  
<br>
<input type="text" name="street" placeholder="straße" >  
<br>
<input type="text" name="house" placeholder="hausnummer" >  
<br>
<input type="submit" value="speichern" name="saves"></input>


</form>

   <script src="data.js"></script>

我想只在js文件中的某些数据发生变化时才刷新页面。如果您能用一些代码解释我,请感谢您的帮助。我在网上搜索,我找不到合适的答案。

1 个答案:

答案 0 :(得分:0)

让我们打破这个局面。你想要:

  • 定期检查
  • 您要检查的内容是远程文件
  • 如果它已经改变,你想采取行动

正如评论中所提到的,有很多方法可以在Javascript中完成上述所有操作。

首先让我们定期检查某些内容:您可以使用递归setTimeout循环,也可以使用setInterval

function waitOneSecond = function() {
    setTimeout(function() {
        check(); // will get to this in a second
        waitOneSecond();
    }, 1000); // 1000 = one second
});

function checkEverySecond() {
    setInterval(function() {
        check();
    }, 1000); // 1000 = one second

接下来,我们需要一种方法来检查文件是否发生了变化。实际的&#34;它改变了部分&#34;取决于你(你可能想考虑使用像Underscore或Lodash的_.isEqual这样的函数),但要做到这一点,你需要获得最新版本的JSON文件。幸运的是,jQuery有一种方法可以做到这一点:getJSON

function check() {
    $.getJson('http://yourserver.com/data.js').done(function(json) {
        if (didChange(json)) {// use _.isEqual to write your didChange
            takeAction();
        }
    });
}

正如您所看到的,最后一个示例也涵盖了采取行动,但我再次将takeAction函数的定义留给您。