js den php çağrı (w / ajax)

5 Cevap php

I'm building a basic forum where every post contains some text, first and last name, and the date the message was written. I'd like to have the board update with AJAX constantly, and to add new messages on the fly as they are written. I have a file, getlatest.php?date=... that retrieves all messages from the date in the $_GET till NOW(). It returns the data as an array of objects. Lastly, I JSON-encode the data. I call this function from some AJAX code, like so:


 setInterval("update()", 5000);
                function update(){
                    $.get("getlatest.php", {
                        date: "2009-06-23_16:22:12" //this is just a date I
                                                    //entered for testing
                    }, function(forumdata){
    	                                   //do something with forumdata here?
                    }, "json");
                }

Şimdi forumdata içinde veri var, forumdata[0].first_name vb gibi.

Ben şimdi çok gibi, açıklamayı görüntülemek için PHP kullanmak istiyorum:

$forumdata = json_decode(forumdata);
foreach ($forumdata as $value)
{
    $newpost = new Post($value); // Post being some class that gets the data from 
                                 // $value and converts it to HTML + CSS
    $newpost->displayPost();     // some function that echo's the HTML
}

Ben ne ben burada gerçekleştirmek için çalışıyorum PHP bir sunucu tarafı dilidir, ve hesaplamalar bu nokta istemci tarafında olduğundan, biraz olanaksız olduğunu, ama ben PHP kullanabilirsiniz (belki AJAX? Aracılığıyla) bir yolu var olduğunu fark verileri yönetmek için, bir kez ben javascript aracılığıyla almak?

Bunu yapmak isteyen için benim ana nedeni javascript bilgi benim toplam eksikliği, yani HTML ve CSS bloklar halinde forumdata değişkeni çeviri için herhangi bir alternatifleri de benim için çok uygundur.

5 Cevap

Well since you don't want to use too much JavaScript (don't be scared with the popular Libraries and Frameworks it is acutally a pretty easy thing to learn and can save you a lot of the hassle you would have by managing everything on the server side) you can still output just the HTML without decoding it to JSON. So the client does this:

 setInterval("update()", 5000);
                function update(){
                    $.get("getlatest.php", {
                        date: "2009-06-23_16:22:12" //this is just a date I
                                                    //entered for testing
                    }, function(forumdata){
                                           //do something with forumdata here?
    		// e.g.
    		$("#forum_entries").prepend(forumdata);
                    }, "html");
                }

Ve PHP komut dosyası (getlatest.php) sadece bu yapar:

<?php
$forumdata = find_posts_after_date($_GET('date'));
foreach ($forumdata as $newpost)
{
   // Echos just the post specific HTML not a whole HTML page
    $newpost->displayPost();     // some function that echo's the HTML  
}
?>

Nerdling zaten önerildiği gibi tarihi ama istemci şu anda göstererek yazının latext benzersiz kimliği kullanmak gerekir.

Sunucu ve istemci arasında tarih / zamanlarda uyumsuzluklar önlemek için yolu her giriş benzersiz bir kimliğe sahip olmasıdır. Bu şekilde, belirli bir kayıt ziyade ofset için göreli bir zaman vermek mümkün olacaktır. MySQL İlköğretim tuşları, bu bir örnektir.

Sen getlatest.php dönüş HTML kodu yerine JSON veri olabilir. Bu şekilde, sadece belgeye iade HTML kodu enjekte etmek zorunda.

Sen) getlatest.php değiştirmek (veya yeni bir dosya, getlatesthtml.php oluşturmak) bu yüzden displayPost HTML çıktısını döndürür (gerekmektedir. Ardından "/ / Burada forumdata ile bir şey yapmak?" sadece bir yerde bazı kabın. innerHTML ayarlamak gerekiyor.

Ben zaten bir yanıt kabul ettik görmek, ama json ayrıştırmak için öğrenme hakkında düşünmek isteyebilirsiniz. Eğer javascript verilerin görüntülenmesini halledeyim isterdim neden bu kadar çok nedeni vardır. API ile web hizmetleri tüm düşünmek, onlar bir çeşit xml veya json döndürür. Eğer jquery şimdi nerede düşünürsek, bu 'her ()' hakkında öğrenme gibi temel bulunuyor. Eğer başlamış alacak gibi bazı googling, this bağlantı görünüyor etmedi. Daha fazla yardım isterseniz yorum bırakın.