2012-02-15 7 views
1

私は変数 "dateposted"を送信してthread.phpにajax呼び出しを行うindex.phpページを持っています。 thread.phpは、index.phpでループされているjsonを返し、最後の値はajax呼び出しに再度送り返されます。すべてこれはうまく動作します。 はしかし、私が直面している問題は、私がこれを行うと、私のAJAX呼び出しで返された応答はこれとJSON配列の私のループをスローJSONの結果が含まれてajaxを使用して更新ページからjsonを取得します

<meta http-equiv="refresh" content="2"> 

を使用して自動更新でthread.php置くときでありますオフ。上記のコードを削除するには、サーバからのデータをポーリングするためにthread.phpが常にリフレッシュされている必要があります。どのように私はこの問題を回避します:参考

のindex.php

<meta http-equiv="refresh" content="2"> 
if(!isset($_GET['dateposted'])) 
{ $lastpost = 0; 
} 
else 
{$lastpost= $_GET['dateposted'];} 



    $latestmsgs = retrieveNewMsgs($lastpost,$currtime); 
    ?> 

<?php echo json_encode($latestmsgs);?> 

thread.php
var returnValue = (function() { 
    var dateposted = null; 
    return function() { 
     $.get("thread.php", { "lastMessage": dateposted }, function(result) { 
     if(result) { 

         for (var i = 0, len = result.length; i < len; i++) { 

          var msgs = result[i]; 
          var newDiv = $("<div><img src='" + msgs[0] +"'/>" + msgs[2] + msgs[3] + msgs[4] + msgs[5] + "</div><br>"); 

          $('#chatContents').append(newDiv); 

         } 

       } 

      dateposted = result[result.length-1][5]; 
     }, "json"); 
    } 
})(); 

答えて

1

あなたは定期的にいくつかのJavaScriptコードを実行するwindow.setInterval機能を使用することができますあなたが定義する時間のだから、メタリフレッシュタグを削除し、setInterval内部のあなたのAJAX呼び出しを配置し​​ます。

// poll the server every 10 seconds for new data 
window.setInterval(function() { 
    $.get("thread.php", ... 
}, 10000); 
+0

ので、代わりの私はthread.phpでのsetInterval関数を使用しますか? –

+0

@coding_newbie、はい。 –

+0

私はどこでエラーを起こしているのか分かりました。私は配列のnullポインタの例外をキャッチしていたwasnt。それで、それは0に戻りました。そしてリスト全体を再び返します。それは爽やかではなかったからだと思った。助けてくれてありがとう –

関連する問題