2014-02-18 23 views
-1

我想重裝我的div名發言欄:AJAX重裝DIV

echo '<div id="shoutbox"><ul>'; 
    $results = $db->query($sql); 
    foreach ($db->query($sql) as $row) { 
     echo '<li>'; 
     echo '<span class="date">'.date("d/m/Y H:i", strtotime($row['date_time'])).' </span>'; 
     echo '<span class="name">'.$row['name'].' - </span>'; 
     echo '<span class="message">'.$row['message'].'</span>'; 
     echo '</li>'; 
    } 
    echo '</div></ul>'; 

但我不知道該怎麼做,與AJAX ......播撒div有重新加載時的點擊你的提交按鈕,每60毫秒。

如果有人可以幫助我,它會沒事的。

+1

每60毫秒太多。 – hjpotter92

+0

「,每60毫秒」這不可能使用ajax。它只是在呼喚麻煩。正如我所看到的,你應該使用WebSockets來代替或者重新思考你的邏輯 –

+0

是的,60毫秒就是少了......每秒都可能? – Advil

回答

0

Michel正處於正確的軌道上。你應該從php獲取數據,並返回json格式的數據,以便客戶端可以在javascript中更新。查看jQuery getJSON函數:http://api.jquery.com/jquery.getjson/。然後你設置一個javascript的「setInterval」函數,像這樣:

setInterval(function(){ 
    $.getJSON("ajax/test.json", function(data) { 
     var items = []; 
     $.each(data, function(key, val) { 
     items.push("<li id='" + key + "'>" + val + "</li>"); 
     }); 

     $("#shoutbox ul", { 
     html: items.join("") 
     }).appendTo("body"); 
    }); 
}, 100); 

這將每100毫秒重新加載數據數組。

+0

我想你的意思是setInterval,或者更好的是一旦請求完成就會被調用的超時。但無論如何每100ms調用一次ajax請求並不是一個好習慣 –

+2

這是一個可怕的想法。如果通話時間超過100毫秒,呼叫將並行發送,直到瀏覽器出現繁榮。您可以在成功處理程序中放置一個setTimeout來再次調用自己 - 因此它只會在最後一次完成後的100ms內啓動一個新的請求。 – AD7six