İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Jquery Refresh ?

garrip

0
İyinet Üyesi
Katılım
28 Aralık 2010
Mesajlar
174
Reaction score
0
Merhaba arkadaşlar,

bir proje için jquery refresh yada buna benzer bir şey kullanmam gerekiyor.
facebook'ta olduğu gibi düşünürsek;
gönderilere yapılan yeni yorumlar tüm sayfa yenilenmeden otomatik olarak çıkıyor.
benimde böyle bir şeye ihtiyacım var. her 20-30 saniyede bir yorum alanını post yöntemiyle yenileyip yorumları listelemem gerek. Ancak tüm gönderiler için bunu nasıl yapacağım orasını çözemedim.

Yada sürekli post yöntemi kullanmadan bunu yapabilir miyiz ? Yardımlarınızı esirgemeyin :hihi:
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
Jquery'de belirli bir seviyede olduğunu düşünerek cevap yazıyorum. Zaten basit bir çözümü yok bunun, biraz ileri seviye bir uygulama.

Temel olarak güncellenecek bölgelere belirli bir attribute verebilirsin.

<div id="a5" rel="guncelle">hehehe</div>
<div id="a6" rel="guncelle">hahaha</div>

vb.

Daha sonra jquery selectorlerini kullanarak tum bu alanları çektirirsin

Kod:
function getir() {
var idler = '';
$('div[rel*=guncelle]').each(function() {
idler = idler+$(this).attr('id')+'|';
});
alert(idler);
}

gibi. tum idleri alip, hepsini komple ajax post u ile gondermen, geri gelen datayı da parse ederek uygun divleri guncellemen gerekir.

En sonunda ise, bu fonksiyonu her 30 saniyede bir calistiracak fonksiyonu body onload da çağırırsın.
 

garrip

0
İyinet Üyesi
Katılım
28 Aralık 2010
Mesajlar
174
Reaction score
0
Angelo teşekkürler. Ancak benim takıldığım noktada tam burada geriye nasıl bir veri göndermem gerek yada gelen değeri kendi alanlarına nasıl bir yerleştirme yapmam gerek takıldığım nokta burası.

Dönen değerim şu şekilde olsa:

HTML:
<div id='a5'>
yorumlar
</div>
<div id='a6'>
yorumlar
</div>

bunları id değerlerine göre kendi alanlarına nasıl yazdırabilirim. Sorunum burda aslında ...
 

Aydın Sistem

0
İyinet Üyesi
Katılım
29 Mayıs 2011
Mesajlar
0
Reaction score
1
Konum
Polonya
Ajax ile veri çekerek güncelleme yapabilirsin bu durumda.

Angelo'nun yazdığı fonksiyon içerisine (değiştirmen gerek, direk olarak o kod hiç bir işine yaramaz. ID'leride o şekilde toplamana gerek yok!) ajax ile veri çekerek gelen verileri gerekli div alanlarına .html(data) ile ekleyebilirsin. Bunu belirli aralıklarla yapmak istiyorsan setInterval içerisinde bu fonksiyonu sürekli olarak çağırmaya devam etmen gerekir.

Başlangıç seviyesinde bir kod değil istediğin. Sanıyorum sende başlangıç seviyesindesin.

Direk kod vermek istemem ancak kod istersende verebilirim. Öğreneceğin bilginin kalıcı olması adına;
1. Ajax'la nasıl bilgi çekeceğini araştır.
2. Dönen veriyi nasıl sayfaya ekleyeceğine bak.
3. setInterval'i nasıl kullanacağını araştır.

Bütün bu bilgilere http://docs.jquery.com/Main_Page adresinden ulaşabilirsin.
 

garrip

0
İyinet Üyesi
Katılım
28 Aralık 2010
Mesajlar
174
Reaction score
0
Ajax ile post get yöntemlerini biliyorum bunları herhangi bir div içinede atmayı biliyorum buralarda sıkıntı yok.

Benim sorunum gelen veriyi nasıl parçalayabilirim. Mantığını kuramadım sadece.

Yani
post dan gelen cevap
HTML:
<div id='a5'>
yorumlar
</div>
<div id='a6'>
yorumlar
</div>


id=a5 sayfadaki <div id='a5'>
id=a6 sayfadaki <div id='a6'>

alanlarına gelecek ancak geri dönen veri bir bütün olduğu için bunu nasıl parçalayabilirim yada id değerlerini tek tek döngü içerisinde geriye nasıl döndürebilirim. ( Biraz karıştı sanki :) )
 

Aydın Sistem

0
İyinet Üyesi
Katılım
29 Mayıs 2011
Mesajlar
0
Reaction score
1
Konum
Polonya
Karışmadı, parçalama için kafanı karıştırmana hiç gerek yok.
2 Seçeneğin var;

1. Array içerisinde gerekli verileri PHP ile hazırlayabilir, sonucu sayfaya yazdırırken json_encode(); içerisine sokabilirsin. Daha sonra elbette Ajax kısmında bu jquery kodların içerisinde kendi html yapını (div v.s.) ayarlayıp dönen json arayın verilerini istediğin gibi içine yerleştirirsin.

2. Yol direk olarak HTML olarak nasıl istiyorsan PHP sayfanda o şekilde çıktı vermek. Dönen sonucuda direk olarak .html(data) içerisinde sayfana eklemek (ajax kısmında dönen sonucu).
 

garrip

0
İyinet Üyesi
Katılım
28 Aralık 2010
Mesajlar
174
Reaction score
0
Pixeler söylemiş olduğun 2.yolu denedim.

HTML:
function y() {
	var id ='';
	$('div[rel*=guncelle]').each(function() {
		i = $(this).attr('id');
		$.post('listele.php', { id:i }, function(s){
			$('#'+i).html(s);
			alert(s);
		})
	});
}

böylece bir döngü oluşturarak her biri için post gönderiyorum.

Ancak bir sorun oluştu. Alert ile gelen yorumları göstermesine rağmen .html ile ait olduğu kısma yorumları listelemiyor.

$('#'+i).html(s) yerine $('#listele').html(s); yaptığımda id='listele' alanına listeliyor ancak işin içine ' i ' değişkeni girince olmuyor.

Sorunu anlayamadım bu konuda yardımcı olabilir misiniz ?
 

Aydın Sistem

0
İyinet Üyesi
Katılım
29 Mayıs 2011
Mesajlar
0
Reaction score
1
Konum
Polonya
İnternete gönderip adres verebilirsen sevinirim. Görerek yorum yapmak daha kesin sonuça gitmemize yardımcı olur.
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
@garrip, son yazdığın örnekte her bir ID için tek tek post atmaya kalkışıyorsun. Benim önerdiğim yöntem ilk önce tüm ID'leri toplayıp, tek bir post ile verileri dağıtma temeline dayalıydı. Tabi ki full çalışır kodu vermedim, senin veritabanını ve sistemini bilemeyeceğim için. Ama işe yaramaz diyen arkadaşın neye istinaden yazdığını bilemeyeceğim, bu tarz jquery selectorleri 100K hitli sitelerde kullanıyorum ben sorunsuz. O yüzden sen de kullanabilirsin.

Benim yapacağım şekli bu olurdu, herkes farklı şekilde düşünebilir tabi.

POST -> ID=1,4,6,7,10,310

Backend PHP dosyası bu post'u alıp, gerekli işlemleri yapar. Şuna benzer bir sonuç çıkartabilir.

cevap[1] = 'Bugun hava guzel'
cevap[4] = 'En sevdigim meyva elma'
..
..

Sen bu cevabı istediğin formatta geri gönderebilirsin. JSON, XML, CSV, düz HTML. Bunları nasıl parse edeceğini araştırman lazım.

http://api.jquery.com/jQuery.parseJSON/

Tek tek post da atabilirsin, ama 100 guncelleme yapilacaksa, her bir guncelleme icin 100 query gonderiyorsun. Belirli bir aralıkta periyodik olarak yaptığını da düşünürsen, aynı anda sitede 3-4 kişi olsa bile gereksiz aşırı yük.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst