2011-04-16 14 views
29

her 10 saniyede Çağrı:jQuery AJAX ben mysql geribildirim veritabanı böyle inşa sahip

adı | konum | geri bildirim

Ryan | İngiltere | Büyük destek

Açıkçası bundan daha girdileri var. Ajax yoluyla her 10 saniyede bir yeni geri bildirim öğesini görüntülediği bir geribildirim divı oluşturmaya çalışıyorum.

$(document).ready(function(){ 
    new get_fb(); 
}); 

function get_fb(){ 
var feedback = $.ajax({//Ajax 
         type: "POST", 
         url: "feedback.php", 
         async: false 
         }).responseText;//end of ajax 

$('div.feedback-box').html(feedback).delay(10000).queue(function() { 
    new get_fb(); 
    }); 
} 

Ve işte benim PHP dosyası var:

Yani bu inşa ettiler

$result = mysql_query("SELECT * FROM feedback ORDER BY RAND() LIMIT 0,1"); 
while($row = mysql_fetch_array($result)) 
{ 
    $name = $row['name']; 
    $location = $row['location']; 
    $feedback = $row['feedback']; 

    echo " 
    <p>Name: $name, Location: $location, Feedback: $feedback.</p> 
    "; 
} 

Ancak bu sadece iki gösterir. Yeni olanları göstermeye devam etmez, sadece ikincisini gösterir ve sonra durur.

Neyi yanlış yapıyorum? Teşekkür :)

cevap

48

Bir setInterval() yapmak istiyorum mısın?

setInterval(function(){get_fb();}, 10000); 

Veya:

setInterval(get_fb, 10000); 

Veya, o çağrıyı tamamladıktan sonra başarılı çalıştırmak istiyorsanız, size .ajax().success() callback'inde bunu ayarlayabilirsiniz:

function get_fb(){ 
    var feedback = $.ajax({ 
     type: "POST", 
     url: "feedback.php", 
     async: false 
    }).success(function(){ 
     setTimeout(function(){get_fb();}, 10000); 
    }).responseText; 

    $('div.feedback-box').html(feedback); 
} 

Ya kullanımını

function get_fb(){ 
    var feedback = $.ajax({ 
     type: "POST", 
     url: "feedback.php", 
     async: false 
    }).complete(function(){ 
     setTimeout(function(){get_fb();}, 10000); 
    }).responseText; 

    $('div.feedback-box').html(feedback); 
} 
: istersen .ajax().complete() ne olursa olsun sonucun çalıştırmak için

İşte ikisinin bir gösterimi. Not, başarı sadece bir kez çalışır çünkü jsfiddle ajax çağrısında 404 hatası döndürüyor.

+1

http://jsfiddle.net/YXMPn/

I özelliğe zarar vereceği kodu, '.responseText' kısmını ortadan kaldırmış ettim. Son düzenlememe bak. –

+1

Bu harika! Yardımın için çok teşekkürler! Örneğini kullandım (.ajax(). Complete()) Teşekkürler :) – ryryan

+1

Sorun değil. Yardım ettiğine sevindim. :) –

3

yerine) setInterval (deneyebilirsiniz:

var i = setInterval(function(){ 
    //Call ajax here 
},10000) 
10
setInterval(function() 
{ 
    $.ajax({ 
     type:"post", 
     url:"myurl.html", 
     datatype:"html", 
     success:function(data) 
     { 
      //do something with response data 
     } 
    }); 
}, 10000);//time in milliseconds 
+0

@Muhammed - URL mülkünde yanlış bir çift tırnak işaretiniz var. –

+0

@Maerlyn - Yanıtları düzenleyebileceğimizi unutmayın. –

+0

@Jared Teşekkürler ve @Maerlyn için teşekkürler, –