2012-01-24 17 views
3

私はjqueryのモバイルenvoirmentでこのスクリプトを使用して長い話を短いです。私はそれをデータベースから結果を取得するためにajaxを使用しています。私は現在動作しますが、自動的に更新されません。私は設定されたインターバル機能を使用する方法についての多数のオンライン記事を読んで、私はそれを試みました。しかし、私はそれを試しても機能しますが、重複するコンテンツ(同じデータベースレコードを何度も何度も繰り返して)を追加し続けます。私はちょうどこれを動作させるように見えることはできません。どんな助けも大いに感謝されます、ありがとうございます!ここでJquery ajax refresh、それを動作させることができません

は私のコードは、(*、私がしたsetInterval機能を削除されません)です。

<script type="text/javascript"> 
$(document).delegate("#member_home", "pagecreate", function() 
{ 
var member= new Array(); 
$.ajaxSetup({cache: false}) 
$.ajax({ 
url: '/scripts/alert_display.php', 
data: "", 
isajax: 1, 
dataType: 'json', 
success: function(data) 
    { 
    $.each(data, function(key, val) { 

var friend = val['friend']; 

$('#member_alerts').append(friend+"&nbsp;Wants to be your friend<input type='hidden' value='"+friend+"' id='hidden4' /><button type='submit' id='add'>Accept</button><br />"); 
                 }); 
                } 
              }); 

           }) 
        </script> 

はこれだけ明確にすることが、助けをどうもありがとう、私のコードは次のようになります?:

<script type="text/javascript"> 
$(document).delegate("#member_home", "pagecreate", function() 
{ 
var refreshId = setInterval(function() 
{ 
var member= new Array(); 
$.ajaxSetup({cache: false}) 
$.ajax({ 
url: '/scripts/friend_request_display.php', 
data: "", 
isajax: 1, 
dataType: 'json', 
success: function(data) 
    { 
    $.each(data, function(key, val) { 

var friend = val['friend']; 

$('#member_alerts').html(friend+"&nbsp;Wants to be your friend<input type='hidden' value='"+friend+"' id='hidden4' /><button type='submit' id='add'>Accept</button><br />"); 
                 }); 
                } 
              }); 
       }, 1000); 
           }) 
        </script> 
+0

各関数の前に成功関数のdata = eval(data)が含まれています –

+0

imあなたはおそらく私に例を示してもらえませんでしたか? –

答えて

2

append関数を使用しているため、重複した内容が追加され続けます。これは、要素の現在のDOMに追加されます。代わりにhtmlを使用してください(divタグを作成する必要があります)。詳細はthis SO questionを参照してください。

1

あなたは

$('#member_alerts').html(yourcontenthere); 

を使用した場合、それは重複コンテンツの問題を解決する必要があります。

1

間隔でリフレッシュを実行する場合は、jQuery ajaxのコールバックにsetTimeoutを設定する必要があります。これにより、要求が完了して関数を再度呼び出すまで関数が待機することができます。

私は、呼び出しを別の関数に書き込んだ後、ページが読み込まれると一度呼び出し、ajax要求が終了するたびにsetTimeout(myFunction、1000)を使って再帰的に呼び出します。これにより、setIntervalの場合と同じように、同時に問題が発生する可能性のある複数の要求をサーバーに与えることができなくなります。

関連する問題