Ajax ile div refresh yapmak?

460 views
Skip to first unread message

Feyyaz Malkoç

unread,
Jun 20, 2009, 3:00:56 AM6/20/09
to ajaxnedir
Arkadaşlar iframe refresh yapmak istiyordum.Bunun için js kullanmıştım
ancak bazı browserlarda çalışmadı.Bende bir div oluşturup bunu ajax
ile yenilemeye karar verdim.Ancak ajax ile sorunuma tam çözüm getirdim
derken, yaptığım çalışmayı IE de denedim bazen takılmalar yaşanıyor ve
div yenilenmiyor.Firefox da sorunsuz çalışıyor.Bana bütün browserlarda
çalışacak birşey lazım yardımcı olan arkadaşlara şimdiden
teşekkürler.Ajax a yeni başladım hatalarım olabilir düzeltirseniz
sevinirim.

Kodlar:

<script type="text/javascript" >
function ajax() {
var nesne;
var tarayici = navigator.appName;
if(tarayici == "Microsoft Internet Explorer"){
nesne = new ActiveXObject("Microsoft.XMLHTTP");
}else{
nesne = new XMLHttpRequest();
}
return nesne;
}

var http = ajax();

function gonder() {

http.open('post', 'yazi.asp');
http.onreadystatechange = cevap;
http.send(null);
}

function cevap() {
if(http.readyState == 4){
document.getElementById('yazi').innerHTML = http.responseText;
}
if(http.readyState == 1){
document.getElementById('yazi').innerHTML = '<img
src="loading.gif">';
}
}
</script>

Div de bu:
<div id="yazi"></div>

Burda yazi.asp de son eklenen yazilar var.Ziyaretçilerin son eklenen
yazıları anında görmeleri için böyle bişey yapıyorum.


Bu şekilde yenilemem doğrumu, başka yolları varmı?

Saygılar...



Volkan Özçelik

unread,
Jun 20, 2009, 5:18:53 AM6/20/09
to ajax...@googlegroups.com
Merhaba Feyyaz,

2009/6/20 Feyyaz Malkoç <feyyaz...@gmail.com>
Bu şekilde yenilemem doğrumu, başka yolları varmı?

Kodunda gösterdiğin gibi yenileyebilirsin.

IE (özellikle IE6) ajax konusunda nazıl davranabiliyor :)
Zaten farklı tarayıcıların farklı sürümlerinde oluşan sorunları bertaraf etmek için üzerinde yıllarca çalışılmış Ajax kütüphaneleri var.

Tekerleği yeniden icad etmek, şu ana kadar (ben dahil) kütüphane geliştiricilerinin çektiği tüm acıları birer birer yaşamak ve kafanı duvardan duvara vurmak istemiyorsan AJAX işlemlerin için bir kütüphane kullanmanı önerebilirim.

sardalya, örneğin, yukarıda bahsettiğin sorunları ve ilk bakışta farkedilemeyecek sorunları (senkronizasyon, memory leakage, exception handling vs.) göz önüne alınarak yazılmış bir ajax kütüphanesi ( http://www.sarmal.com/sardalya )

Epey bir süredir güncellenmiyor (gerek MessengerFX, gerekse linkibol.com 'un yeni sürümü tüm vaktimi aldığı için pek vakit ayıramıyorum) -- bununla birlikte sardalya'nın oldukça kararlı bir kütüphane olduğunu söyleyebilirim. linkibol.com 'da gördüğünüz tüm AJAX fonksiyonları sardalya aracılığıyla yapılıyor.

Ayrıca sardalya tamamen özgür kaynaklı olduğu için herkes katkıda bulunabilir.
"ben sardalya'yı geliştirmek istiyorum" diyen herkese kapımız açık ;)

sardalya dışında bir öneri istiyorsan ilk tercihim jquery'den yana olurdu. Arkasında ciddi bir topluluk desteği var. Ve hemen hemen her şey için bir jquery plugin bulabiliyorsun.

YUI, ext.js, eyceks vb. gibi daha pek çok alternatif var değerlendirebileceğin.

...
Gelelim elinde varolan soruna nasıl yaklaşabileceğin

Öncelikle takılmaların nedenine odaklanman lazım.

- kodda herhangi bir yerde bir error/exception oluştuğu için cevap() fonksiyonuna girmiyor musun?
- cevap fonksiyonuna giriyorsun da readyState mi farklı geliyor?
- readyState 4 oluyor ama http 200 (success) dışında başka bir status code mu alıyorsun?

bu konuları araştırabilirsin.

Takılmanın bunun gibi pek çok nedeni olabilir.

Ayrıca, özellikle internet explorer'da yeni bir AJAX gönderiyorsan transport nesneni abort etmen gerekir, yoksa sorun yaşarsın.

sardalya'nın konuyla ilgili segmenti aşağıda:
	/*
	 * abort former request, if any.
	 * This is necessary to re-use the object
	 * because IE6 and below are not that
	 * clever to understand that a
	 * new request is initiating.
	 */
	this.abort();

http://www.sarmal.com/lib/js/sarmal/sardalya/sardalyaFull_src.js linki aracılığıyla sardalya'nın güncel bir sürümüne

http://www.sarmal.com/sardalya/documentation/tr/index.html üzerinden Türkçe API dokümantasyonuna
ve http://sourceforge.net/projects/sardalya üzerinden sardalya'nın son geliştirici sürümüne erişebilirsin. 

Yardımcı olması dileğimle,
--
Volkan Ozcelik
+> Front End Architect, MessengerFX : http://www.messengerfx.com/
+> I tweet: http://twitter.com/linkibol
+> linkibol.com - in seek for quality links : http://www.linkibol.com/
+> my blog (in Turkish) : http://www.fikribol.com/donkisot/
+> Sardalya JavaScript Library : http://www.sarmal.com/sardalya/

Feyyaz Malkoç

unread,
Jun 20, 2009, 6:51:53 AM6/20/09
to ajaxnedir
Çok teşekkür ederim.Jquery kullanmayı düdşünyorum kütüphane olarak.Ama
sardalya ya da bakarım.

Saygılar...

Feyyaz Malkoç

unread,
Jun 20, 2009, 9:13:18 AM6/20/09
to ajaxnedir
Teşekkürler abort(); methoduyla çözdüm işi




On 20 Haziran, 12:18, Volkan Özçelik <volkan.ozce...@gmail.com> wrote:
> Merhaba Feyyaz,
>
> 2009/6/20 Feyyaz Malkoç <feyyazmal...@gmail.com>
> vehttp://sourceforge.net/projects/sardalyaüzerinden sardalya'nın son

Ahmet KIZIL

unread,
Jun 25, 2009, 9:30:53 AM6/25/09
to ajaxnedir
Mrb. Feyyaz. Bende div kullanarak sitemde online olan kişilerin anında
görünmesini sağlayan koda ihtiyacım var. Yukarıda bahsettiğiniz
kodlarda abort() metodunu nasıl kullandınız. Çalışan kod gönderebilir
misiniz.... İyi çalışmalar...
> > +> Sardalya JavaScript Library :http://www.sarmal.com/sardalya/- Alıntıyı gizle -
>
> - Alıntıyı göster -

Olmez

unread,
Jun 26, 2009, 3:38:16 AM6/26/09
to ajax...@googlegroups.com

$(document).ready(function () {
$.timer(3000,function() {

$.ajax({
type:'POST',
url:'istegecevap.php',
success: function (msg) {
$('sonucgoster').html(msg);
}
});
});
});
 



Jquery ile yukarıdaki kod yarmıyla yapabilirsiniz ...

25 Haziran 2009 16:30 tarihinde Ahmet KIZIL <sand...@gmail.com> yazdı:
Reply all
Reply to author
Forward
0 new messages