如果HTML文件已更新,则执行JavaScript 2

如果HTML文件已更新,则执行JavaScript 2,javascript,ajax,jquery,http-headers,Javascript,Ajax,Jquery,Http Headers,从中我得到了一个很好的答案,请参见下面的代码。 我遇到了一个问题 此脚本正在自我检查。代码位于index.html中,它将检查index.html上是否有更改。如果有更改,它应该刷新自己。这一切都是可行的,但它保持不变 因此,如果您更改一次文件,它将循环显示“站点已被修改”并刷新。安博迪知道如何解决这个问题吗 <html> <head> <script type="text/javascript" src="http://code.jquery.com/

从中我得到了一个很好的答案,请参见下面的代码。 我遇到了一个问题

此脚本正在自我检查。代码位于index.html中,它将检查index.html上是否有更改。如果有更改,它应该刷新自己。这一切都是可行的,但它保持不变

因此,如果您更改一次文件,它将循环显示“站点已被修改”并刷新。安博迪知道如何解决这个问题吗

<html>
  <head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
      var checkUrl="index.html";
      var firstCheck = false;
      window.setInterval("checkForUpdate()", 1000);

      function checkForUpdate() {
          $.ajax(checkUrl, {
              ifModified : true,
              type : 'HEAD', 

              success : function (response) {
                  if(firstCheck === false) {
                      firstCheck = true;
                      return;
                  }
                  $('#output').html('the site has been modified');
              }
          }); 
      }    
   </script> 
  </head>
  <body>
    <div id="output">Not Modified</div>
  </body>
</html>

var checkUrl=“index.html”;
var firstCheck=false;
setInterval(“checkForUpdate()”,1000);
函数checkForUpdate(){
$.ajax(检查URL{
如果修改:正确,
类型:'头',
成功:功能(响应){
if(firstCheck==false){
firstCheck=true;
返回;
}
$('#output').html('网站已被修改');
}
}); 
}    
未修改

您的代码源承认它不起作用,并提供了替换解决方案:

var checkUrl="test.txt";
window.setInterval("checkForUpdate()", 1000);
var pageLoad = new Date().getTime();

function checkForUpdate() {
    $.ajax(checkUrl, {
        type : 'HEAD',
        success : function (response, status, xhr) {
            if(firstCheck === false) {
                firstCheck = true;
                return;
            }
            // if the server omits the 'Last-Modified' header
            // the following line will return 0. meaning that
            // has not updated. you may refine this behaviour...
            var lastModified = new Date(xhr.getResponseHeader('Last-Modified'))
                .getTime();
            if(lastModified > pageLoad) {
                $('#output').html('the site has been modified');
            }
        }
    }); 
}  

如果尝试对请求类型使用
GET
POST
而不是
HEAD
,会发生什么情况?暗示头部可能不完全支持如果我删除
if(firstCheck==false){firstCheck=true;return;}