AJAX bir PHP kodu çağırarak ve her birkaç dakikada bir yanıt alıyorum

3 Cevap php

Ben yeni bir mesaj geldi ise otomatik güncelleme birkaç anları görmek için çok basit bir mesaj panosu (yazar, metin ve tarih yazılı) oluşturmak için çalışıyorum, ve, varsa, otomatik (ler) son mesajı yük .

PHP uzman değilim, ama AJAX benim bilgi eksiktir.

The way I see it, I would have to create a PHP file called get_messages.php that would connect to a database and get through a $_GET variable return all posts beyond date X, and then I would somehow through jquery call this PHP file every few minutes with $_GET=current time? Does this sound correct?

Nasıl hakkında talep var olacak ve uyumsuz web sayfasına veri döndürme?

3 Cevap

Sen çok yakınsın, sizin sonuçlar için veritabanını sorgulayabilirsiniz bir PHP komut dosyası gerekir. Sonra, bir diziye bu sonuçları yüceltmek isteyeceksiniz, ve json_encode() onlara:

$results = getMyResults();
/* Assume this produce the following Array:
   Array(
     "id" => "128","authorid" => "12","posttime" => "12:53pm",
     "comment" => "I completely agree! Stackoverflow FTW!"
   );
*/
print json_encode($results);
/* We'll end up with the following JSON:
   {
     {"id":"128"},{"authorid":"12"},{"posttime":"12:53pm"},
     {"comment":"I completely agree! Stackoverflow FTW!"}
   }
*/

Bu sonuçlar JSON biçiminde kez, daha iyi javascript ile bunları işleyebilir. : JQuery ajax functionality, biz aşağıdakileri yapabilirsiniz kullanma

setInterval("update()", 10000); /* Call server every 10 seconds */

function update() {
  $.get("serverScript.php", {}, function (response) {
    /* 'response' is our JSON */
    alert(response.comment);
  }, "json");
}

Şimdi javascript içinde veri var ki ('yanıt'), sunucudan bilgileri kullanmakta serbesttirler.

ASP.NET şeyler görmezden, bu linki iyi bir başlangıç:

http://www.aspcode.net/Timed-Ajax-calls-with-JQuery-and-ASPNET.aspx

Ne kullanmak için gidiyoruz uyumsuz bir aralıkta bir javascript işlevi çağıran setTimeout adında bir javascript fonksiyonu vardır. Oradan, jQuery aradığınız bir DIV veya ne olursa olsun eleman içine bir AJAX arama sonuçlarını yük olacak "yük" olarak adlandırılan bir fantezi işlevi vardır. DOM İstediğiniz şekilde değiştirmek yapmak için jQuery almak için çok sayıda başka yolları da vardır.

Orada bunu yapmak için bir yüz yolu vardır, ama kaçının yapabilirsiniz yaparken kendinizi çapraz tarayıcı işlevsellik baş ağrısı kaydetmek için düz Javascript yazma söyleyebilirim.

Ben Google kod mevcut Basit AJAX Code-Kit (SACK) için gitmek öneririz.

Ben Google koduna oldu önce beri bunu kullanıyorum. Çok hafif ve basittir. Bu eklemek gereken bir js dosyası bulunuyor. Ben de online tarayıcı oyunlarında kullanılan gördüm.

http://code.google.com/p/tw-sack/

Sana get_messages.php den sayfa içeriği hakkında bakım ve sadece php dosyasını aramak istemiyorsanız get_messages.php bir div (yüklenmesini sayfa içerikleri için örnek, basit {[kaldır (2)]} hat):

<script type="text/javascript" src="tw-sack.js"></script>
<script>
var ajax = new sack();
ajax.method = "GET";  // Can also be set to POST
ajax.element = 'my_messages'; // Remove to make a simple "ping" type of request
ajax.requestFile = "get_messages.php";
ajax.setVar("user_name","bobby");
ajax.setVar("other_variables","hello world");
ajax.setVar("time",dateObject.getTime());
ajax.onCompleted = whenCompleted;
ajax.runAJAX();

function whenCompleted(){
  alert('completed');
}
</script>

<div id="my_messages">Loading...</div>

Eğer istek, basit bir "ping" tip yapmak ve php dosyanın çıkışını görmezden istiyorsanız bir "ajax.element" belirtmeniz gerekmez. Şimdi gereklerini uygulamak için yapmanız gereken tüm ajax çağrıları yapma "setTimeout" kullanmaktır.

Gibi birçok diğer seçenekler de vardır:

//ajax.onLoading = whenLoading;
//ajax.onLoaded = whenLoaded; 
//ajax.onInteractive = whenInteractive;

Büyük çerçeveler öğrenmek ya da eklemek gerek yok. Ve sen tw-çuval ile hiçbir zaman başlamak gerekir.