Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Ajax - Firefox Get, Post Problemi


Öne çıkan mesajlar

Mesaj tarihi:
Iki gundur google u altust edip bir sürü kod inceleyip denememe rağmen sorunumun bir çözümüne ulaşamadım.Takip ettiğim yegane forumlardan biri olduğu için PHP forumları yerine önce buraya bir sorayım dedim.

Öncelikle sorunum şöyle. Bir listeleme motoru yapmam icap etti soyleki ,

kategori > ulke > sehir

Bu bilgilerin hepsi veritabanın da tutulmakta ( mysql ) ve sitenin içeriği ile ilgili olan ulke/sehirler eklenip çıkarılabilmekteler. Kategori seçince o kategoriye ait ulke, ulke seçince o ulkeye ait sehirleri comboboxlara ajax yardımıyla getirmekteyim. Daha sonra FORM u GET method ile Submit ettiğimde ajax ile getirip oluşturduğum comboxların değerlerini çekemiyorum. Adres barda da hiç bir şekilde gorunmuyorlar. Ancak kullandıgım script IE de sorunsuz çalısıyor.

Ilgili javascript kodu


var xmlHttp
// str -> cagrilan combobox
// str2 -> gonderilen value degeri
function boxgetir(str,str2,str3){
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null){
alert ("Browser does not support HTTP Request")
return
}
//alert (str);
//alert (str2);
//alert(str3);

var url="arama2.php"
url=url+"?box="+str
url=url+"°er="+str2
url=url+"&kate="+str3
url=url+"&sid="+Math.random()

if (str==10){
xmlHttp.onreadystatechange=stateChangeu
}
if (str==20){
xmlHttp.onreadystatechange=stateChanges
}
if (str==30){
xmlHttp.onreadystatechange=stateChangeo
}
if (str==40){
xmlHttp.onreadystatechange=stateChangep
}
xmlHttp.open("GET",url,true)
xmlHttp.setRequestHeader(`Content-type`, `application/x-www-form-urlencoded;charset=iso-8859-9`);
xmlHttp.setRequestHeader(`Content-type`, `application/x-www-form-urlencoded;language=tr`);
xmlHttp.send(null)
}
function stateChangeu(){
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("utxtHint").innerHTML=xmlHttp.responseText
}
}

function stateChanges(){
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("stxtHint").innerHTML=xmlHttp.responseText
}
}

function stateChangeo(){
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("otxtHint").innerHTML=xmlHttp.responseText
}
}

function stateChangep(){
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("ptxtHint").innerHTML=xmlHttp.responseText
}
}

function GetXmlHttpObject(){
var xmlHttp=null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e){
//Internet Explorer
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}




Arama ile Ilgili Html Kodu


<table width="561" border="0" align="center" cellpadding="2" cellspacing="1" class="tables">
<form name="arama" id="arama" action="?sayfa=fiyat_listesi" method="get">
<tr>
<td colspan="4" bgcolor="<?=$aramabar;?>" class="beyazbold"><input name="sayfa" type="hidden" value="fiyat_listesi" />Dil Okulu Arama Motoru </td>
</tr>
<tr>
<td width="1%" align="left" bgcolor="#ffffff">
<select id="prog" name="prog" class="dpTable2" onchange="boxgetir(10,this.value,this.value); document.getElementById('utxtHint').innerHTML='Yukleniyor!...'; document.getElementById('lsubmit').disabled=false;">
<option value="">Lutfen Program Seçiniz</option>
<option value="1">Dil Okulları</option>
</select></td>
<td width="1%" align="left" bgcolor="#ffffff">
<div name="utxtHint" id="utxtHint">
<select id="ulke" name="ulkeler" class="dpTable2">
<option value="">Lutfen Ulke Seçiniz</option>
<option value="">Once Program Seçiniz</option>
</select>
</div></td>
<td width="1%" align="left" bgcolor="#ffffff">
<div name="stxtHint" id="stxtHint">
<select name="sehirler" class="dpTable2">
<option value="">Lutfen Sehir Seçiniz</option>
<option value="">Once Ulke Seçiniz</option>
</select>
</div></td>
<td align="left" bgcolor="#ffffff">
<div name="otxtHint" id="otxtHint">
<select name="okullar" class="dpTable2">
<option value="">Lutfen Okul Seçiniz</option>
<option value="">Once Sehir Seçiniz</option>
</select>
</div></td>
</tr>
<tr>
<td colspan="4" align="center" bgcolor="#ffffff"><input name="Listele" id="lsubmit" type="submit" class="mailbox" value="Uygula" onclick="if (document.getElementById('users').value.length==0 || document.getElementById('pusers').value.length==0){ alert('Okulları görmek için önce Ülke ve Program seçmeniz gerekiyor?'); return false; } else { return true; }" disabled/></td>
</tr>
</form>
</table>



Dediğim gibi sadece Firefox da ne GET ne de POST methoduyla çalışmıyor.
lerin içine gelen comboboxların value değerlerini alamıyorum.
Mesaj tarihi:

bosver bu kismi

firefox'ta table'larin altinda yer alir. Soyle ki





dedigin zaman, sen getElementsByID('formTable') dediginde sana table'i verir. Daha sonra .child'ini aldiginda ilk child normalde olmasi gerekirken firefox 'i yollar. ama IE'de kodda yoksa, ne varsa onu alir.
Bu nedenle html kodunda, her table'i







seklinde yaz. Daha sonra da js'de alinan child'lara bi layer daha ekle.




div'lerin value'su degil ki onlar. div'lerin child'i olan select'in value'su. yani getElementByID("xx") sana sadece yapiyi donduruyo. Bunun child'ini alman gerekiyo
Mesaj tarihi:
riglous'un dediği gibi;
sen ilgili div'in innerHTML'ini değişitiriyorsun ki halihazırdaki select elementlerini tamamen silip, yerine raw text koyuyorsun. dolayısıyla ff submit edemiyor. doğru davranıyor...

div yerine select elementine verirsen o id'leri..

menu getiriyorum. Yani mantıken olusan durum
in value degerini gonderiyor diger ajax ile olusan id="10" name="ulkeler" class="dpTable2">




id'si 10 olan select elementi, ülkeye denk geliyor.. javascript içinde de str == 10 diye kontrol ediyorduk ya hani..



yazarken iş girdi araya, anlam bütünlüğünü koruyamamış olabilirim ama içerik doğru =) kolay gelsin.

not: kodu test etmedim ve başka bir hata üzerine yoğunlaşmadım.
Mesaj tarihi:
Ilk paragrafta soyledigin beni benden aldı :). En azından browserın neden boyle davrandıgını farketmiş oldum ve ona göre çözüm yolu aradım. Biraz sağ kulağını sol elinle tutmak gibi oldu ama sonuçta işime yarar bir yol buldum. Şimdilik bir sorun gorunmuyor bakalım kurcalıyım biraz daha, en azından kodları optimize etmem gerekiyor bu durumda sanırım.

Ajax'a daha yeni yeni girdim sayılır bakalım daha nelerle karşılaşıcağız.Çok saolun yardımlarınız için.
Mesaj tarihi:
Baska bi seyle karsilasmayacaksin, bunlarla cebelleseceksin genelde. Ayni mantigi farkli yerlere uygulayacaksin.

Bence AJAX, js'yi yeniden canlandirma girisimlerinden biri. Simdilik tuttu ama ileriki yillarda unutulmaya mahkum bi dil. Emin ol daha iyisi gelecek ki bu nedenle fazla sarmamani tavsiye ederim.
Mesaj tarihi:
riglous said:
Bence AJAX, js'yi yeniden canlandirma girisimlerinden biri. Simdilik tuttu ama ileriki yillarda unutulmaya mahkum bi dil. Emin ol daha iyisi gelecek ki bu nedenle fazla sarmamani tavsiye ederim.


eminim aynisi c++ icin de soylenmisti
Mesaj tarihi:
AJAX şu anda yeni nesil web tabanlı programların kilit noktası. Daha bir kaç gün katıldığım seminerde trends in web applications diye bir sunum vardı. Yeni geliştirilen dillerin ve konseptlerin bir çoğu AJAX üstüne kuruluyormuş. Uzun bir süre AJAX'ın bir yere kaybolacağını zannetmiyorum. Daha yeni yeni oturmaya başladı zaten.
Mesaj tarihi:
Herkesin ongorusu farklidir. Bu benimkisi. AJAX sistemi tabii ki devam edecek, dogrudan feedback verebilmesi sayesinde bircok zahmetten kurtardi ancak bu JS ile olmayacak, yeni bir dil gelistirilecek. Eh bu noktada da isminin AJAX olarak kalmasi mantiksiz.

Ha cikacak yeni dil JS2.0 olur baska bi sey olur, orasi pek onemli degil acikcasi. Onemli olan kismi js'nin hantalligi ve ogrenmeye deger bir dil olmamasi
Mesaj tarihi:
Uzun zamandır yapmak isteyipte yapamadığım şeylere imkan sağlaması benim için büyük yenilik. ( sayfayı yenilemeden içinde oynamalar yapmak ).Ajax uzun zamandır var olmasına rağmen bu zamana kadar pek kullanan olmamış nedense Gmail den sonra baya bir rağbet görmeye başladı.
Mesaj tarihi:
js açısından çok acılar çekiyorum, okul arasında iş yapmaya uğraşan insanlar olarak saç baş yolduruyor. 1 gün ajaxla ilgili okudum, 2. günü yazdım, bu süre boyunca beni meleten js nin bi tarayıcıda öyle diğerinde şöyle çalışması oldu :(.
Mesaj tarihi:
- öncelikle framework de olsa, onun da sözdizimi oluyor. js'e hakim olsanız bile framework'ün sözdizimine aşina olmanız gerekiyor ki ben bunu tercih etmem. js öğrenmeden sadece framework'e hakim olmak ise sizi kısıtlar. gösterilenle yetinirsiniz. framework, spesifik sorunlarınıza deva olmuyor genellikle.. bu js'i ne kadar ve nasıl kullandığınızla da ilgili yani.. ben framework'lere pek sıcak bakmıyorum. tercih etmek zorunda kalsam da framework yerine js kütüphanesi kullanırdım.

- öte yandan bazı durumlarda tek bir fonksiyon için koca kütüphaneyi kullanıcıya indirtmek, boşuna sayfaların indirilmesini yavaşlatmak hoş değil. dezavantaj.

framework ya da kütüphane iyidir. işinizi kolaylaştırır ve zaman kazandırır. ama her durumda iyidir demek yanlış olur.

edik:
mirage, piyasadaki en iyi ve popüler framework'leri sıralıyım:
YUI (yahoo user interface), prototype, script.aculo.us, dojo toolkit.. bunların sitelerine bakarsan, bir fikrin olur zaten ;)
Mesaj tarihi:
Evet. jQuery'nin 10 küsür kb'lık js dosyası kullanıcı açısından büyük bir külfet olsa gerek :)

Yapmayın allah aşkına. Çoğu sistemde kütüphaneler 100 kb'ı geçmiyor bile.

Peki Javascript öğrenilmeden js framework kullanılır mı? Bal gibi kullanılır. Js hakkında bilginiz vardır, mantığını bilirsiniz. Css hakkında bilginiz vardır, mantığını bilirsiniz. Sonra açarsınız adam akıllı bir js framework'ün manual'ını, bir kaç saat/gün içinde Neo misali 'I know Kung-Fu' diye kalkarsınız yerinizden. Yapmak istediğiniz işler için fazlasıyla yeterlidir.

Ha amaç sadece dört dörtlük şekilde, iş için değil zevk için javascript öğrenmek ise pek tabi buyrun, tutmayayım ben sizi :)

Yok iş yapacaksanız, saç baş yolmadan halledeyim derseniz alın bir kütüphane/framework (js için iki kavramda aynı kapıya çıkıyor neredeyse) kullanın.

Hatırlatmak isterim ki hala IE 6 diye bir bela var dünyada. Sırf bu yüzden bile cross-browser js/css yazmak gerçekten zor iş. Uğraştırıcı, sıkıcı ve tam anlamıyla vakit kaybı.
Mesaj tarihi:
- 100 kb, yoğun trafiği olan ve listeleme gibi büyük veriler transfer eden sayfalarda büyük bir rakamdır.

- ben de öyle dedim işte.. js bilmeden framework kullanılabilir. ama framework kullanarak, js ile yapabileceğiniz her şeyi yapamazsınız. yapsanız da "hakkıyla" yapamazsınız. (case study: spreadsheet modelinde schedule. bu örnekten o kadar fazla hadise çıkarabilirim ki..)

- js library ile js framework aynı şey değildir. framework'ün kendine has spesifikasyonları vardır, library'nin yoktur.

- amatörsek ya da hobi için js öğrenelim? profesyonel isek framework kullanalım.. ben bunu anladım nedense yazından(?) peki.

- slideshow gibi şeyler için sıfırdan js kodlamaya gerek yoktur ama js de sadece bu değildir. framework, browser-based uygulamaların çoğuna hitap etmiyor.

Ractamainus said:

framework ya da kütüphane iyidir. işinizi kolaylaştırır ve zaman kazandırır. ama her durumda iyidir demek yanlış olur.


son söz olarak şunu söyleyebilirim; günümüzde .net gibi platformlar var ama c de hala belirli sektörlerde vazgeçilmezdir. gibi..
Mesaj tarihi:
ben de framework yerine kutuphane kullanilmasi taraftariyim

he kendi projelerimde tembelligimden framework kullanirim, orasi ayri. bkz birseyin dogrusunu bilmek ile uygulamanin farklari

ayrica, piyasada framework diye dolanan cogu javascript kodu aslinda gelismis birer kutuphane. gerci framework ve kutuphane arasindaki fark keskin olmadigi icin bu tartisma uzamaya musaittir =)
Mesaj tarihi:
Fark kesin abi ikisi arasinda. Birisi kutuphane, digeri taslak. Kutuphane tek bi amaca yonelik kitaplar icerir, girer alirsin, isine yaradigi surece kullanir, isin bittiginde de geri verirsin. Taslakta ise zaten belli kutuphanelere girmis cikmis bi ust seviyedesin gibi dusun. Ha bu hala kutuphane kullanamyacagin anlamina gelmiyo ama misal opengl library'sini kullanirken yapacagin is daima goruntuyledir. Ama bi ruby on rails'la blog da yaparsin ecomm. sitesi de yaparsin... Javascript library'lerine hic bakmadim ancak mantik olarak dusundugunde zaten javascript icin "library"lerin hepsinin framework olmasi gerekli. Cunku compile etmek gibi bi durum olmadigindan dogrudan islemi yapan browser'a kalmis bir durum. Keske library gibi bi durum olsaydi da hepsi icin tek bi kod calissaydi, butun browser'lar da library'i kullansaydi...
Mesaj tarihi:
nasıl derlemek yok abicim, senin kodunla birlikte o da derleniyor. ki zaten derlemek ilke kütüphane-framework farkını anlayamadım..

framework'ün bence en önemli özelliği (ki bu da tanımına göre değişiyor ve ortada zilyon farklı tanım dönüyor) birden fazla seviyeyi, katmanı ya da eşseviye işlemi, yazılımı bir araya getirmesi. yani bir ajax framework vardır, server tarafında kodları hazırlar, xml çıktısını oluşturur, javascript kodu vardır kullanıcı tarafında derlenir, bu paşalar gibi bir frameworktür. ama sadece javascript kodundan oluşan ve "best practice" uygulaması gibi bir amaca yönelen kodların framework olarak anılması biraz garip..
Mesaj tarihi:
paticik de ajax muhabbetleri görmek gözlerim yaşarıyor :)
framework iyidir ama java bilmek hepsinden iyidir.

fellik fellik java bilen adam arıyor dünya :)
Mesaj tarihi:
lol, baya komik olmus tabi javascript'ten bahsederken araya java'nin sikismasi ama eminim arkadas biliyodur farkini. Fellik fellik arayan yok bu arada; herkes hala c++ ariyo. Arada cikiyo zaman zaman ama niye java ariyolar onu da bilmiyorum... Sordugumda genelde "oyle basladik, oyle gidiyoruz" diyolar. Kendileri de bilmiyolar yani...

Turkce konusmaya kalkinca cikiyo tabi butun sorunlar. Derlemeden kastim compile idi. "Dogrudan interpreter tarafindan process edildigi icin" demek istemistim. Aradaki cizgiyi de library'nin compile time'da programa eklenmesine karsilik, interpreter'in process ederken framework'u kullanmasi arasinda cizmeye calistim ama pek beceremedim tabi.

Dedigin gibi library bircok seviyeyi birlestiriyo ve bu genelde machine language'e cevirme asamasinda gerceklesiyo. E bu isi javascript'te yapan browser'in kendisi. Herhangi bir yazilmis framework, kullanici (programi yazan kisi) tarafindan yazilmis bir kod, browser'in nasil interpret edecegine karismiyo/karisamiyo. Bu nedenle kullanicilarin yazidiklarini library olarak degerlendirmek bence yanlis. Cizgiyi boyle cizince de framework'le library'i karistirmak pek de kolay olmasa gerek.

Buna karsilik keske yazilabilse. Boylece her browser ayni sekilde karsilik verirdi.


Edit: tabi sen de simdi C interpreter diyeceksin bana, ben de kafayi karistirmaya gerek yok abicim diyecem; compile etmen gerekiyo mu gerekmiyo mu, soru ve cevabi net :)
Mesaj tarihi:
Konuyu biraz değiştireceğim ama..
riglous said:
lol, baya komik olmus tabi javascript'ten bahsederken araya java'nin sikismasi ama eminim arkadas biliyodur farkini. Fellik fellik arayan yok bu arada; herkes hala c++ ariyo. Arada cikiyo zaman zaman ama niye java ariyolar onu da bilmiyorum... Sordugumda genelde "oyle basladik, oyle gidiyoruz" diyolar. Kendileri de bilmiyolar yani...
...

Türkiye için mi konuştun bilmiyorum ama Java, dünyadaki en popüler dil. Çevremden takip ettiğim kadarıyla da Java bilen birisi genellikle iş bulabilir Türkiye'de de(her ne kadar Türkiye'de dünyadaki kadar popüler olmasa da).

Hatta şöyle bir liste vereyim (ki kendisi tüm dünyada takip edilen bir listedir).
http://www.tiobe.com/tpci.htm
Aylık güncellenen bir listedir. Benim bildiğim en az 1 yıldır Java açık ara birinciliğini koruyor.
×
  • Yeni Oluştur...