Cevaplar
-
sorucevap ile birlikte Id geliyorsa gelen Id'leri ayrı bir array'e kaydedip o sorunun daha önce gelip gelmediğini o array'de yeni Id'nin olup olmadığına bakarak kontrol edebilirsin.
Ama bu kontrolü Javascript'e yaptırdığında sayfa kapatılıp açıldığında o listeyi kaybedeceğin için bu kontrolün ASP tarafında yapılması daha makul olacaktır.-
psygnosis
evet ID side geliyor... ve Sayfa kapanmıyor.. yenilenme olmuyor.. başka sayfaya gitmiyor...
jquery yeni öğreniyroum bunun Array leri biraz farklı bi örnek yapabilirmisin necmettin kardeş12 yıl önce yazılmış -
necmettin
javascript'teki array'lerde key yoktur, başka da büyük bir farkı yok.
javascript kodlarına başladığın yerde, fonksiyonların dışında, bir global javascript değişkeni tanımlarsın, örneğin "ids=new Array();" ile.
Sonra $.each'in içinde "ids.push(sorucevap.ID);" ile yeni gelen sorunun id'sini ids array'ine eklersin.
gelen sorucevap.ID'nin ids array'inde olup olmadığını kontrol eden kısmı sana bırakıyorum.12 yıl önce yazılmış -
necmettin
Basit bir javascript fonksiyonu ile bir elemanın o array'de olup olmadığını kontrol edebilirsin:
function array_element_exists( arr, elemname) {
return (arr.indexOf(elemname) != -1);
}
Anlayacağın, indexOf Contains'in benzeridir ama false yerine -1, true yerine elemanın kaçıncı sırada olduğunu döndürür.12 yıl önce yazılmış -
psygnosis
burda -1 değilse yani dizide yoksa mı oluyor.. :) -1 zaten bir şeyin olmaması onun değili pardon o zaman bu yazdıgın içeriyor demek.. Terimler karıştı :D12 yıl önce yazılmış -
necmettin
-1 ise yok, -1 değilse var demek. Dolayısıyla bu verdiğim fonksiyon o elemanın o dizide olup olmadığını veriyor.12 yıl önce yazılmış
-
-
js ile pek aram yok bu kodlardan pek birşey anlamadım aslında ama c++ dersinde böyle bir işlem yapmıştık farklı çözüm yolları vardır. Mesela soru sayısı kadar bir dizi oluştur tüm değerleri 0 yap. rastgele gelen sayıyı kullanıp yine soruyu çağır. çağırdıktan sonra gelen sayıncı dizideki sıfırı 1 yap. sonra tekrar rastgele sayı iste. gelen sayıncı dizinin 1 olup olmadığını kontrol et. 1 ise tekrar sayı salla değilse devam et mantığında birşey yapabilirsin...
-
necmettin
Soruları cevaplayacak kişinin kaç soru cevaplayacağı belli değilse bu yöntem işe yaramaz. Ayrıca örneğin 1000 soru cevaplayacaksa 1000 elemanlı bir array oluşturmak da hafıza açısından pek iyi bir çözüm olmuyor.12 yıl önce yazılmış -
psygnosis
necmettin 25 soru cevaplıcak sadece... ya aslında mantık şöyle de
document ready oldugunda bir soru geliyor..
önce if(!dizi.contains(ID)) içermiyosa attık..
dizi.add(ID);
soruGetir(); yeni soru getir
else
soruGetir(); içeriosa da yeni soru getir dedik..Bu kısımda bir problem cıkabilir.. Ben bunu denedim ama olmadı ya da bir şeyi eksik yazdım
javascript dizisinde contains kullanımı biraz değişik önce var dizi =new Array();
Array.Contains(dizi,ID) burası true false döndürüyor...12 yıl önce yazılmış -
necmettin
Benim bildiğim javascript'te array'lerin Contains diye bir metodu yoktur, onun yerine indexOf kullanmak gerekiyor.
Javascript tarafına örnek mantık:var ids=new Array(); function array_element_exists( arr, elemname) { return (arr.indexOf(elemname) != -1); } function soru_getir() { soru = .... //burada $.ajax ile soruyu aldığımızı varsayıyorum if (ids.indexOf(soru.id) != -1) soru_getir(); else { ids.push(soru.id); //soruyu göster }
12 yıl önce yazılmış -
adogan
senin tavsiye ettiğin yöntemde de 1000 elemanlı array oluşturacak hatta bi de her seferinde onları tek tek kontrol edecek. anlatmaya çalıştığım yöntemi dikkatli okursanız o anki gelen sayı baz alınarak, oluşturduğumuz 0 ve 1lerden array bir kere kontrol ediliyor. tavsiye ettiğin yöntemden çok daha az sorgu yapılıyor. hatta sadece 0 ve 1 leri tuttuğumuz için belki de senin dediğim yöntemden daha da az hafıza meşgul edilyor (bundan tam olarak emin değilim.). yanılıyosam düzeltin ben de uzman değilim bu konuda fikrimi söylüyorum sadece bir de ben c++ mantığında söylüyorum jsde belki değişiyodur işler..?12 yıl önce yazılmış
-
-
gizli bir inputta önceki sorunun id sini tutup ondan farklı değer gelmesini sağlayabilirsin.
-
psygnosis
açabilirmisin biraz ben mesela 25 soru cekicem input butona basınca gelen sorunun degeri öncekiyle değişicek mi? hidden içindeki değerle?
Arrayla nasıl yapabiliriz Bunda Contains metodu yok galiba.12 yıl önce yazılmış -
necmettin
İyi bir çözüm değil bence, her seferinde önceki ID'ler kayboluyor çünkü.12 yıl önce yazılmış -
mcicek
// Tüm idleri veritabanından alarak gizli inputa yazdım function getId() { $.ajax ( { url: 'getir.aspx/tumIDLER', success: function(rtn) { document.getElementById("hiddenInput").value=rtn; getSoru(); } } ); } // gizli inputtaki değerleri split ile array haline getirip for döngüsü ile // çekmeye başladım. çektiğim her değerden sonra idKaldir() // fonksiyonu ile çekmiş olduğum id yi gizli inputtan kaldırdım. function getSoru() { var gncID=document.getElementById("hiddenInput").value; sncID = gncID.split(','); for (var i=1;i< sncID.length+1;i++) { $.ajax ( { url: 'getir.aspx?soruID='+sncID[i], success: function(rtn) { document.getElementById("sorularDiv").innerHTML+=rtn; idKaldir(sncID[i]); } } ); } } function idKaldir(id) { str =document.getElementById("hiddenInput").value; newstr=str.replace(id+",",""); document.getElementById("hiddenInput").value=newstr; }
Benim aklıma bu geldi şimdi,belki server ı kasıp ram şişirebilir ama aklıma gelen başka birşey yok şuan12 yıl önce yazılmış -
psygnosis
Teşekkürler cevaplar için. Bunlardan bir şeyler çıkar herhalde ama alternatif cevapları da beklerim olan lütfen paylaşsın..
Bşka bir soru şimdi soruların cevapları şıkları IsTrue şeklinde cevap tablomda duruyor onclickle hangisinin dogru oldugunun kntrolünü nasıl yaparım.. o iD ye sahip cevapların IsTruelarını getrip onclik le kontrolle nasl yprım12 yıl önce yazılmış -
teacher0610
Aslında bu işi sunucu tarafında yapabilirsin ve daha sağlıklı olur diye düşünüyorum. ajax ile soru istediğin sorugetir.php (örnek olarak) dosyasında bir $_SESSION["id"] gibi bir değişkende gönderdiğin sorunun id sini tut. Kulllanıcı yeni bir soru istediğinde mevcut sorunun id sine bakarak verdiği cevabı kontrol ettir, doğruysa, yeni bir soru gönderirsin , değilse işlem yaptırmazsın. Ben buna benzer bir mantığı kendi sitemde kullanıyorum. incelemek istersen eğer :
www.sinavagir.net e girip bakabilirsin. İnceledikten sonra kod konusunda yardımcı olurum...12 yıl önce yazılmış -
psygnosis
evet güzelmiş benzer iş istiyorum bende işte.. ama sayfa yenilemesi yok bende bir soru gidiyor diğeri geliyor.. Benim sistemin söyle
$.ajax
{
url:.aspx/WEBMETHOD bu metodla soru ve cevapları geliyor...
success: burda gelen sonucu işliyorum olay burda zaten
}12 yıl önce yazılmış -
psygnosis
evet güzelmiş benzer iş istiyorum bende işte.. ama sayfa yenilemesi yok bende bir soru gidiyor diğeri geliyor.. Benim sistemin söyle
$.ajax
{
url:.aspx/WEBMETHOD bu metodla soru ve cevapları geliyor...
success: burda gelen sonucu işliyorum olay burda zaten
}12 yıl önce yazılmış -
psygnosis
abi yalnız ben soruları tek tek çekiyorum... sen hepsini bi arada istemişin12 yıl önce yazılmış -
necmettin
O kontrolü soruları tek tek veren betikte yapmak, soruyu çektikten sonra yapmaktan daha makul bir çözüm olacaktır.12 yıl önce yazılmış
-