[Linux-programlama] Re: AJAX ve JavaScipt ile URL değiştirme

---------

[Linux-programlama] Re: AJAX ve JavaScipt ile URL değiştirme

From: Mahir B. Aşut <mahir.asut_at_ttmail.com>
Date: Tue, 26 Feb 2008 21:48:53 +0200
Message-ID: <47C46D25.5080106@ttmail.com>
Maalesef öyle. # karakteri "bookmark" lar için, tarayıcıda halen açık olan sayfadaki bir bölüme zıplamak için kullanılıyor genelde.

Bir kullanım alanı da görsellerin önbelleklemesini engelleyerek ismi aynı kaldığı halde içeriği değişebilen resimlerin güncel halini gösterebilmek.

Mesela ben tarayıcının önbelleklemesini engellem için bir projede perlgrafik.cgi şeklinde ve dinamik veriyle gif çıktısı üreten bir perl programcığının sonuna rasgele oluşturulan bir sayı dizisi koyuyordum:

http://www.domain.com/cgi-bin/perlgrafik.cgi#90340934

Web tarayıcısı (istemci), bu URL'yi sondaki #..'li kısımla birlikte dikkate alınca ve URL'nin sonunu farklı (önbellektekinden farklı) görünce "hah! bu başka birşey, çağırayım gelsin sunucudan !" diyerek önbellekten ekrana göndermek yerine sunucudan istiyor resmi.

Sunucu tarafında #... atıldığı için sunucu şaşırmıyor ve istenen çıktıyı gönderiyor.

Tarayıcı, grafiğin güncel versiyonunu görüntülüyor...

Selamlar,
Mahir


Nuri Akman yazmış:
Arkadaşlar,

Üzüntü ile http://www.webmasterworld.com/forum88/2665.htm adresindeki yazışmaları okudum :(

Çok ilginç ki, URL'deki # karakteri ve sonrası server'a hiçbir zaman GÖNDERİLMİYOR!!!

Bu üzücü haber üzerine FaceBook resim albümü linkini bir daha inceledim ve gördüm ki,

http://www.facebook.com/photo.php#pid=160222&id=686426247

olarak çağırılan sayfanın adresi

http://www.facebook.com/photo.php?=&pid=160222&id=686426247

olarak düzeltiliyor.

java script'i kapatıp birinci linkteyi sayfayı açmaya çalıştığımda FaceBook "Sayfa Bulunamadı" mesajını verdi.

Gördüm ki, FaceBook javascript ile "#" karakterini "?=&" ile değiştirerek sayfayı sunucuya tekrar gönderiyor.

# karakteri ve sonrası JavaScript ile alınmak istendiğinde window.location.hash komutunun kullanıldığını da öğrendim.

Arkadaşlar, bu konudaki gelişmeleri sizlerle paylaşmaya dervam edeceğim.

Selamlar,
Nuri AKMAN


Mahir B. Aşut yazmış:
Selamlar,

Ajax'ın (yani XMLHTTPRequest istekleri) Google başta olmak üzere arama motorları açısından olumsuzluğunu bertaraf etmeniz mümkün değil ki bu durum başlı başına dikkate alınması gereken bir konu.

En iyisi, gerekli gereksiz Ajax kullanımından kaçınmak diye düşünüyorum. Mutlaka endekslenmesi gereken ve gerekmeyen kısımları belirleyip ona göre kullanmak gerekiyor.

Resimlerin gösterimine gelince, mutlaka endekslenmeleri şart değilse bunlarda Ajax kullanımı arama motorları açısından sorun çıkartmaz.

Öte yandan resim gösterimi için kullanılabilecek çok sayıda yöntem ve son derece güzel hazırlanmış java uygulamaları mevcut.

Mahir

Nuri Akman yazmış:
Arkadaşlar,

Artık AJAX kullanımı oldukça arttı. Ancak, bu durum Arama Motorları açısından
sayfanın indexlenmesinde olumsuz sonuç verdi.

Çünkü, JS ile yapılan AJAX çağrıları, Arama Motorları tarafından algılanamıyor.

Örneğin:
[a href="#" onclick="SayfaGoster(3); return false;"]Ürünlerimiz[/a]

Ayrıca, bu örnekte URL'de yazan http://www.mydomain.com ifadesi değişmiyor.
Böyle olunca sayfanın kalıcı linki (permenant link) başkalarıyla paylaşılamıyor.
Yani ziyaretçiler, "Abi, istediğin ürün şu sayfada : xxx " gibi bir mesaj gönderilemiyor.

Burada 3 adet sorun var:
1.) Arama Motorlarında yer alamama
2.) Kalıcı link verememe
3.) Hedefi yeni pencerede/sekmede aç sağ tuş fonksiyonları çalışmıyor.

Aşağıdaki basit çözüm ile buradaki sorunların 2 tanesini gidermek mümkün:

[a href="urunler.php" onclick="SayfaGoster(3); return false;"]Ürünlerimiz[/a]
 
Bu kullanımda, href'e değer girildiği için;
1.) Arama motoru doğru indexleme yapabilir.
2.) Hedefi yeni pencerede/sekmede aç sağ tuş fonksiyonları çalışır.

Geriye sadece AJAX kullanımında adres satırının değiştirilmesi konusu kalıyor.

Geçmişte FLASH kullanılarak bunun yapılabildiğini okumuştum, ancak o zaman ilgimi çekmemişti.

Ajax ile sayfa URL'inin değiştirilmesi, sayfanın yeniden yüklenmesine (post-back) neden olur.
Bu da AJAX'ın getirdiği avantajların silinip gitmesi anlamını taşır.

FaceBook'da Fotograf Albumü bölümünü incelerken şunu gördüm:
Sonraki/Önceki fotoğraf düğmelerine basıldığında URL'de :
http://www.facebook.com/photo.php?pid=300319&id=772293458&ref=nf#pid=160222&id=686426247
gibi "URL DEĞİŞİMİ" olduğunu gözlemledim.

Aynı sayfa adresi şu şekilde yazıldığında yine sayfa çalışmaktadır.
http://www.facebook.com/photo.php#pid=160222&id=686426247

Sanırım AJAX çözümünde bu noktaya odaklanırsam üçüncü ve son sorun da çözülmüş olur.

Bu çerçevede, URL'deki # karakteri sonrasındaki pid ve id gibi parametrelerin ayrılarak PHP'de $_GET['id'] biçiminde kullanılabilmesi için bir çalışma yapmak yeterli olacaktır.

Sorunu ve çözümü bu şekilde tespit ettikten sonra sanırım bu konuda web'den örnek aramaya gerek olmayacaktır.

Diğer taraftan, Apache'deki mod_rewrite ile AJAX çağrısı konusunun ayrıca ele alınması gerekir düşüncesindeyim.

Arkadaşlar, bu konudaki fikirlerinizi grup üyeleri ile paylaşmanızı dilerim.

Selamlar,
Nuri AKMAN





Ustun ERGENOGLU yazmış:
http://www.contentwithstyle.co.uk/Articles/38/fixing-the-back-button-and-enabling-bookmarking-for-ajax-apps
aradığınız bu olsa gerek.

26.02.2008 tarihinde serkan@yaramazca.com <serkan@yaramazca.com> yazmış:
  
# sayfa icinde achor olarak kullanilabilir ama burdaki sorun ajax ile
 kullanimi. ajaxin bir dez avantaji da bavk tusunun ve si
  kullanilanlara eklenin calismamasidir. ama bunun # ile sayfa icinde
 cozuldugunu birkac sitede gordum. urlde # li sekilde cagrilinca ajax
 tetikleniyordu ve o sayfa ulasilabiliyordu. ama yontemini tam olarak
 bilmiyorum...


 On 2/26/08, Deniz Dizman <deniz.dizman@gmail.com> wrote:
 > self.location="#hede" dediginiz zaman, ayni sayfada kalirsiniz, ancak URL
 > degismis olur.
 > Ornegin www.hodo.com/index.php desiniz ve yukardaki kodu yazdiniz,o zaman
 > www.hodo.com/index.php#hede olur ama ayni sayfada kalirsiniz reload da
 > etmez.
 > basindaki # isareti buradaki kilit nokta :)
 >
 >
 >
 > 2008/2/25 Anıl KARADAĞ <anil.karadag@gmail.com>:
 >
 > >
 > > Ajax ile sunucuda islemler yapar sonucunu sayfa postback  olmadan
 > > yayinlariz. Url degisimi demek sayfanin yeniden yuklenmesi (aynı
 > > sayfaysa) demektir. Ajax ile gittigin url arka planda kalir,
 > > goruntulenmez.
 > >
 > > facebooknun bu degisimi ajaxla yaptigina emin misin? sayfayi hic
 > > incelemedigimden bahsettigin seyi gormedim.
 > >
 > > Pzt, 2008-02-25 tarihinde 15:09 +0200 saatinde, Nuri Akman yazdı:
 > > > Arkadaşlar,
 > > >
 > > > Haırladığım sayfada resimler üzerinde ileri / geri hareket butonlarını
 > > > kullanarak resim galerisi hazırladım.
 > > >
 > > > Sayfa HIZLI çalışsın düşüncesiyle resim çağırmayı AJAX ile hallettim
 > > >
 > > > Tabi ben bunu ajax ile yaparken URL değişmiyor :(
 > > >
 > > > Halbuki, facebook'taki izlenimim bunun yapılabildiği yönünde.
 > > >
 > > > Bu konuyu nasıl yapabilirim acaba?
 > > >
 > > > Selamlar,
 > > > Nuri AKMAN
 > > >
 > > > _______________________________________________
 > > > Linux-programlama mailing list
 > > > Linux-programlama@liste.linux.org.tr
 > > > http://liste.linux.org.tr/mailman/listinfo/linux-programlama
 > >
 > > _______________________________________________
 > > Linux-programlama mailing list
 > > Linux-programlama@liste.linux.org.tr
 > > http://liste.linux.org.tr/mailman/listinfo/linux-programlama
 > >
 >
 >
 >
 > --
 > dendiz
 > http://dendiz.blogspot.com
 >
 _______________________________________________
 Linux-programlama mailing list
 Linux-programlama@liste.linux.org.tr
 http://liste.linux.org.tr/mailman/listinfo/linux-programlama

    
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama

  


_______________________________________________ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr http://liste.linux.org.tr/mailman/listinfo/linux-programlama

No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.516 / Virus Database: 269.21.1/1298 - Release Date: 25.02.2008 20:45

_______________________________________________ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr http://liste.linux.org.tr/mailman/listinfo/linux-programlama


_______________________________________________ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr http://liste.linux.org.tr/mailman/listinfo/linux-programlama

No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.516 / Virus Database: 269.21.1/1298 - Release Date: 25.02.2008 20:45

_______________________________________________
Linux-programlama mailing list
Linux-programlama_at_liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Received on Tue 26 Feb 2008 - 21:11:20 EET

---------

Bu arsiv hypermail 2.2.0 tarafindan uretilmistir.