0

コードの何が問題になっているのかわかりません。ターゲットファイルのコンテンツを変更しても、iframeは更新されません。

<script type="text/javascript">
var page = 'data/apps/<? echo $_SESSION['name']; ?><? echo $_SESSION['last']; ?>App.html', lM;

function checkModified(){
   $.get(page, function(a,a,x){
      var mod = x.getResponseHeader('last-modified');
      if(lM != mod){
         lM = mod;
         document.getElementById("frame").src += "";
      }
   }
}

setInterval(checkModified, 5000); // every 5 seconds
</script>

私が達成したいのは、ターゲットページに変更があった場合、iframeが自動的にリロードして、変更をユーザーに表示できるようにすることです。両方のページが同じドメインにあります。

4

1 に答える 1

2

まず、$.getメソッドの最後に閉じ括弧「)」がありませんでした。

ただし、主な問題は、サーバーが適切なLast-Modifiedヘッダーを送信していないことである可能性があります。私がテストしたサーバーは何も送信しませんでした。つまりmod、未定義です。Content-Length回避策は、代わりにチェックすることです。編集されたページは必ずしもサイズを変更しないため、理想的ではありませんが、ページを制御しているように見えるので、バイトを追加して強制的に更新することができます。

checkModified動作するはずの更新された関数は次のとおりです。

function checkModified() {
   $.get(page, function(a, b, x) {
      var mod = (x.getResponseHeader('Last-Modified')) ? x.getResponseHeader('Last-Modified') : x.getResponseHeader('Content-Length');
      if (lM != mod) {
         lM = mod;
         console.log('Fetched');
         document.getElementById("frame").src += "";
      }
   });
}
于 2012-10-23T00:56:58.837 に答える