2009-07-27 22 views

cevap

14

Veritabanı içeriğine bağlı olarak güncellenmesi gereken sayfa, DB'yi her sık ​​sık sorgulamalıdır. Javascript bir istemci tarafı teknolojisidir ve arka uç sunucuları ile doğrudan etkileşim için tasarlanmamıştır.

javascript bu (kullanarak jquery) gibi görünecektir:


$.post("/webroot/checkForChanges.php", 
     { currentNumber: currNumString }, 
     function(dat){ 
      $(dat).find('link').each(function() { 
       $('#linksTable').append(""+$(this).text()+""); 
      }); 
}); 

Bu bir değere sahiptir currentNumber adındaki değişkenle sen yazacak sayfasında (checkForChanges.php) POST isteği yapacak Tabloda halihazırda bulunan bağlantı sayısının dize olarak gösterilmesi (bunlardan istediğinizi sayın).

kodun bir parçası (dat) kısmı, istek tamamlandığında (yani php sayfasının işlenmesi tamamlandığında ve sonuçta alınan metin tarayıcıya alındığında) çalıştırılan geri arama işlevidir.

PHP sayfasının ne yaptığını açıkladığımda bunun ne yaptığına geri döneceğim.

Veritabanı yapınız hakkında herhangi bir şey söylemediniz, ancak insanların bağlantı eklemelerine başarılı bir şekilde izin verdiğinizden, bağlantı için bir tamsayı kimliğini izleyen bir yerde tanımlanmış bir dizinin olması gerekir (böylece her bağlantı veritabanında benzersiz bir kimlik verildi). Bu sayfa tarafından döndürülen çıkış bir düğümle bir xml belge olacaktır



//open a database connection 
$DB = connect(name, user, password); 

//receive value 
$currNum = $_POST['currentNumber']; 

//check to see if sequence number has incremented since last time: 
$seqNum = query("SELECT currval('links-count')"); 

if ($seqNum == $currNum){ 
    exit(0); 
} //if they are the same, just exit the page without writing anything 

//otherwise, carry on... get the result of your query (for new links) 
//and loop through, echoing return data 

$newEntries = query("SELECT url FROM links WHERE id > ".$currNum); 

echo "<newlinks>"; 

while ($result = fetch_result($newEntries)) { 
    echo "<link><a>".$result."</a></link>"; 
} 

echo "</newlinks>"; 

: Sana Aşağıdaki sözde kod ile basit bir php sayfası oluşturmalıdır bu 'bağlantıları-sayımı' aradım varsayıyoruz Tablo hücrenize koymak istediğiniz HTML'yi içeren her bağlantı için. Şimdi

biz istemci tarafı Java kodunda $ .post istekte geri arama işlevi geri dönebilirsiniz:


function(dat){ 
    $(dat).find('link').each(function() { 
      $('#linksTable').append(""+$(this).text()+""); 
    }); 
}); 

dat iade metindir bir jquery nesne olarak sarın ve daha sonra bulmak 'link' adlı etiket koleksiyonu. php sayfası tarafından döndürülen her bir 'link' etiketi için, link etiketlerinin içindeki verileri içeren linksTable'a yeni bir tablo satırı ekleyen bir işlev yürütün.

+1

Pekala, biraz zaman aldığım oldukça eksiksiz bir cevap ... bballbackus, denedin mi? Bunu kabul edebilir veya oylayabilir veya en azından yorumlarınızda geri bildirim verebilir misiniz? Teşekkürler – sillyMunky

0

Değişik sayfada, temel olarak db'yi değişiklikler için yoklayan etkin bir javascript'iniz olabilir veya başarılı bir gönderimden sonra bir geri arama işlevine sahip olabilirsiniz. Burada neler olduğuna tam olarak emin değilim, bu yüzden ne tavsiye edeceğimi gerçekten bilmiyorum.

İlgili konular