1

私はこのようなdivをロードします:

var auto_refresh = setInterval(
function ()
{
    $('#nowplaying').load('nowplaying.php').fadeIn("slow");
}, 10000);

ページに変更があった場合にのみロードしたいのですが。'change'でそれを行うにはどうすればよいですか?

これが私が試したことです:

function ()
{
    var cachedDOM = $('div#nowplaying').html();
    $.get('nowplaying.php',function(data){
        if (cachedDOM != data) {
        $('#nowplaying').load('nowplaying.php').fadeIn("slow");
        }
    }
    )
}, 3000);

問題は、「cachedDOM!=data」が常に真であるということです。

パトリック

4

6 に答える 6

1

で変更されたようなものを意味していると思いますbody。あなたはそのようなことをすることができます:

var cachedDOM = $('body').html();
var auto_refresh = setInterval(
function ()
{
    if(cachedDOM != $('body').html()) 
       $('#nowplaying').load('nowplaying.php',function(){cachedDOM = $('body').html();}).fadeIn("slow");
}, 10000);
于 2012-12-15T13:53:57.750 に答える
0

xdazzありがとうございます。それは私がしたことです:

var auto_refresh = setInterval(
function ()
{
function getcursong(){  
 var result = null;
 var scriptUrl = "get_current_song.php";
 $.ajax({
    url: scriptUrl,
    type: 'get',
    dataType: 'html',
    async: false,
    success: function(data) {
        result = data;
    } 
 });
 return result;
}    
gcs = getcursong();
okas = $('#song').html();
if (gcs != okas){
    $('#nowplaying').load('nowplaying.php').fadeIn("slow");
}
}, 10000);
于 2012-12-15T21:55:30.953 に答える
0

したがって、変更するかどうかを知らせる別のページが必要です。

var auto_refresh = setInterval(function () {
  $.get('check_change.php', function(data) {
    if (data.changed) {
      $('#nowplaying').load('nowplaying.php').fadeIn("slow");
    }
  });
}, 10000);
于 2012-12-15T13:53:34.310 に答える
0

dom 変異イベントを参照してください。次に、何かが変更されたかどうかを確認できます。https://developer.mozilla.org/en-US/docs/DOM/Mutation_events

于 2012-12-15T13:54:05.810 に答える
0

を使用する代わりに、リクエストをload使用して-Flag を true に設定できます。これにより、ページのコンテンツが変更された場合にのみ、定義された応答が得られます。これを機能させるには、サーバー側 (etag) でさらに設定が必要になる場合があります。ドキュメントへのリンク: jquery ajax callajaxifModified

于 2012-12-15T13:56:24.470 に答える