Mesajı düzenlemek zorunda kaldım çünkü oldu sandığım kodlar hatalı çalıştı.
Mesajı düzenlemek zorunda kaldım çünkü oldu sandığım kodlar hatalı çalıştı.
Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.
Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.
turkoman bana özelden ulaşırsan yardımcı olabilirim pek vaktim olmuyor yazmaya
Anladığım kadarıyla Ajax responseText kullanılınca birden fazla request yapmıyor. Bunun alternatifi var mı? Belki responseXML ile bu işlem yapılabilir. Fikri olan var mı?
Aşağıdaki kodu kullanmıştım o da kendi kendine tazelemiyor. Hem de diğerine göre yavaş çalışıyor.
PHP Kodu:<?php
// BELGE include() edilebilir
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254" />
<title>DENEME SAYFASI</title>
<script>
function Veri(id)
{
var x = XMLIstek();
var i=0;
var al = document.getElementById(id);
x.send('puani='+id);
x.onreadystatechange = function()
{
if (x.readyState == 4 && x.status == 200)
{
al.innerHTML = x.responseText;
setTimeout("Veri(id)", sto); // Her 3 sanıyede bır kendını yenıle.
}
}
}
function XMLIstek()
{
var x = null;
if(!x && typeof XMLHttpRequest != 'undefined')
{
try
{
x = new XMLHttpRequest();
}
catch (e)
{
x=false;
}
}
x.open('POST','classlar/istemci.php',true);
x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=ISO-8859-9');
return x;
}
</script>
</head>
<body>
<?php
for($i = 1; $i < 6; $i++)
{
echo $i.' => ';
echo '<div id="'.$i.'" class="alanlar"></div><br>';
echo '<script language="Javascript"> Veri('.$i.'); </script>';
}
?>
</body>
</html>
Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.
Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.
birden fazla request yapabilirsin ama sen kendi kodlarını kullandığın için çok yardımcı olamadım arkadaşım sen şöyle yapsan ajax.js diye bir kütüphane hazırlasan sayfaya import edildiğinde tek fonksiyon ile ajax işlemini yaptırsan
ajax('buElementeYaz','veriyiBurdanGetir.php?getir' +veri,'POST-metod-',5000-milisaniyedeTekrarla-);
gibi bir hale çevirebilirsen senin için kolay olur
Kendi kendimle mesajlaşıyorum gibi bir hisse kapılmaya başlamıştım. chesterx, cevap verdiğin için teşekkürler. Bir üstte verdiğim kod çalışıyor ama refresh yapmıyor. Kullandığım diğer kod ve açıklaması aşağıda.
PHP Kodu:<?php
// BELGE include() edilebilir
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254" />
<title>DENEME SAYFASI</title>
<script>
// BU KISIM REQESTİ YAPACAK STANDART KODLAR TARAYICI UYUMLUMU vs. şeylere bakıyor
function XMLIstek()
{
var x = null;
if(!x && typeof XMLHttpRequest != 'undefined')
{
try { x = new XMLHttpRequest(); }
catch (e){ x=false; }
}
x.open('POST','classlar/istemci.php',true);
x.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=UTF-8');
return x;
}
// BU YÜZDEN YUKARIDAKİ KISIM İÇİN AÇIKLAMA EKLEMİYORUM
/*
FORM içerisinde birden fazla div var bunlar dinamik oluştuluyor ve id leri dinamik
elemanları document.getElementById('idsi') ile alamıyorum bu yüzden aşağıdaki kodla
önce dinamik oluşturulan id leri tespit etmeye çalışıyorum (forumdan aldım bu kodları gelendiv.className
sağlıklı çalışmıyor ama şimdilik öncelik sırası başka şeyde olduğu için önemli değil)
*/
function id_al()
{
// fonksiyon içinde kullanılacak olan değişkenleri tanımlıyoruz.
var i=0; // döngüde sayac olarak kullanılacak
var gelendiv; // buna daha sonra döngü içinde divler adlı değişkenin değerlerini depolayacağız
var al=[]; // Aldımız id leri tutacağımız dizi (array)
var divler = document.getElementsByTagName('div'); //Sayfa içindeki Tag adı div olan nesneleri divlere atıyoruz
var q=-1; // ikinci sayaç elemanı
// divleri çektikçe bunları gelendive atıyor
while(gelendiv = divler[i++])
{
// aslında çalışmıyor ama gelendiv'e aldığımız divlerden class adı alanlar olanları seçiyor
if(gelendiv.className == "alanlar")
{
q++;// gelendiv'e aldığımız divlerden class adı alanlar olanları uydukça q nun değerini artırıyor
al[q] = gelendiv.id; // Al adlı diziye q index numarası ile gelendiv'e depolanmış nesnelerin idlerini koyuyor
// Mantık şu al = array('q+1' => 'gelendiv.id+1',)
}
}
//Son olarak fonsiyon oluşturulan diziyi kendini çağıran yere döndürüyor
return al;
}
// Asıl işi yapan fonsiyon bu
function Veri()
{
// id almak için oluşturduğumuz fonksiyonu çağırıp o fonsiyonda oluşturduğumuz al
// adlı dizinin bir kopyasını bas adlı değişkene atıyoruz.
var bas = id_al();
// Sayaca kıyaslama ölçüsü olarak kullanmak için bas dizi değişkeninin eleman sayısını alıyoruz
var say = bas.length;
// En üstte oluşturulan XMLHttpRequest nesnesinin kopyasını oluşturup x adlı değişekene atıyoruz
var x=XMLIstek();
// w o an klavyede parmağımı tesadüfi bastiğim bir harf for döngüsünün sayacı
// say nesnesinin sayısı (Yani bas dizisinin eleman sayısı) kadar işlemi tekrarlıyor
for(w = 0; w < say; w++)
{
// x adlı XMLHttpRequest nesnesi ile veri gönderiyoruz
// gönderdiğimiz veri bas dizisinin w'inci elemanı
// ( 1 )
x.send('puani='+bas[w]);
// Tam anlamasam da değişiklik yani sorgu oluşması halinde bir fonksiyon oluşturuluyor
x.onreadystatechange = function()
{
// readyState 4 işlem yapılıp cevap gelince
if (x.readyState == 4 && x.status == 200)
{
// belge içerisinde bas[w] id numarasına sahip elemana dönen sonuç ekleniyor
document.getElementById(bas[w]).innerHTML = x.responseText;
// Her 2 sanıyede bır kod kendini diriltiyor
setTimeout("Veri()",2000);
}
}
// X.send değeri null olarak değiştiriliyor ki teoride
// ( 1 ) ile numaraldığım satıra dönüp sıradaki değeri iletmeli
x.send(null);
// Aşağıdaki kodu belki işe yarar diye koydum hiç bir halta yaramadı :)
x.close;
}
}
/**/
</script>
</head>
<body onLoad="Veri()">
<p>
<?php
// Bu döngü dinamik olarak 5 adet div oluşturması için konuldu
// Kod örnek olacağı için bu yolu seçtim asıl çalışmada db den veri çeken
// ve ekrana basan kodlar var
for($i = 1; $i < 6; $i++)
{
echo $i.' => ';
echo '<div id="'.$i.'" class="alanlar"></div><br>';
}
?>
</p>
</body>
</html>
Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.
Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.
kodlarını aldım bir göz gezdireyim
kodların gayet güzel çalışıyor fakat şu problem var sadece gelen veri sadece ilk yazıldığı yere yazılıyor inceleyeyim belki çözerim
şimdi yol göstermek amaçlı bir düşüncem var veri(); fonksiyonuna veri gönderiyoruz ve sonucu belirlediğimiz bir dive değil de for döngüsünden çıkan dive basıyor peki biz bu veriyi her seferinde çağırıyoruz setTimeout("Veri()",2000); kod ile 2 saniyede bir tekrarlıyoruz bu işlemi for döngüsü hep çalışıyor bu durumda yani yine rakam üretiyor her seferinde de ilk ürettiği rakama response basıyor bence sorun veri içerisindeki for döngüsünde
chesterx, hatanın orada olduğu kesin biliyorum çünkü bildiğim kadarıyla test ettim nedense w nin değerin sadece 2 sayısına kadar yükseltip döngüyü kesiyor ama nerede mantık ya da sentax hatası var onu bulamıyorum.
Bakıyorum sayın değeri 5 yani olması gerektiği gibi ama döngü sadece 1 ve 2 sayılarını üretiyor. Ben bu javascript'i sevemedim bu yüzden de hep ihmel ettim. Böyle yaptıkça iyice soğuyorum![]()
Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.
Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.
o zaman id gönderme ile yapsana ya da farklı bir fonksiyonda döngüyü sağla o fonksiyondan çıkan değeri veri() fonksiyonuna gönder o dive yazsın olmaz mı
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks