2009-11-30 12 views
5

Ajax'teki geçmişi denetlemek ve bağlantılar/sayfalar için kitap-işaretli hale getirmek için jQuery'deki URL sağlamalarını kullanmaya çalışıyorum. Hemen hemen her eklentiyi denedim ve düzgün çalışacak gibi görünmüyor, bu yüzden gerçekten herhangi bir kod örneğim yok. Ama ben herhangi bir öneri, bilgi, öğreticiler, vb. Için açığım.jQuery + Ajax Karma/Geçmiş ve daha fazlası

Bunu içine dahil etmeye çalıştığım sayfalardan biri arasındaki fark, aynı da olan jQuery animasyonlu bir sıçrama/yükleme sayfasına sahip olduğumdur. Tüm içeriğin yükleneceği sayfa.

.. ve bu linkte, tüm sıçrama/yükleme animasyonlarını by-pass etmek ve içeriği doğrudan hash değerleri/dizgisine (bu durumda # ev) dayalı olarak yüklemek istiyorum.

Bir süredir bunu anlamaya çalışıyorum, herhangi bir yardım büyük beğeni topladı, teşekkürler!

cevap

12

Peki, sorunlarınız nedir? Karma etiketi mi yoksa karma değişimini mi yapıyorsunuz?

Tabii ki, karmaların ayarlanması, basitçe bağlantıların, örneğin <a href="www.voidsync.com/2010/#page">Link</a> bağlantılarına yerleştirilmesi sorunudur, ama sanırım bu senin problemin değil.

Gerçekte karma ile bir şeyler yapmak için, örneğin her 100 ms'de bir karma değişkeni olup olmadığını kontrol eden bir dinleyici işlevine sahip olmanız gerekir. karma değiştiyse

$(function() { 
    var current_hash = false; 
    setInterval(function() { 
     if(window.location.hash != current_hash) { 
      current_hash = window.location.hash; 
      $('#content').load("content.php?page="+current_hash); 
     }   
    }, 100);  
}); 

That (denenmemiş) işlevi her 100ms kontrol ediyorum ve bu sahipse, o zaman Ajax yoluyla sayfasını günceller: Basit bir fonksiyon böyle gidebiliriz.

Bu işlev, sayfa yüklenmesinde de çalışır, bu nedenle kullanıcı sayfada www.voidsync.com/2010/#images gibi bir bağlantıya sahipse, işlev otomatik olarak sayfa görüntülerini yükler. Öyleyse tarih ve imi işleniyor.

Bunun yardımcı olacağını umarız, başka bir şey ifade edip etmediğinizi sorun.

+0

biraz yeniden biçimlendirme yaptı ve işe koyuldu, her yeni tarayıcıda da çalışıyor ve sıçrama yüklemesini sıfırlamak için onu değiştirmeyi başardım, şerefe! – abysslogic

+0

aslında, bağlantıların yer işareti yapılabilmesi için daha fazla yeniden yazma yapmalı ve karma ayarlanmışsa ancak yükleme animasyonları çalışırken varsayılan sıçrama sayfasını atlamalıdır. – abysslogic

+1

Yeniden yazmayı abysslogic? – rideon88

1

Tatu'nun cevabına dayanarak, bu işi benim için yapmak için birkaç şeyi değiştirdim. Bir geçmişi korur, bu yüzden geri ve ilet düğmeleri iyi çalışır. İşte, ne var

$(function() { 
var current_hash = false; 
setInterval(function() { 
    if(window.location.hash != current_hash) { 
     current_hash = window.location.hash; 
      if(current_hash=='#home'){ 
       var month = '9'; 
       var year ='2011';  
       $.ajax({ 
        type: "POST", 
        url: "/home.php", 
        data: "data+here", 
        success: function(msg){ 
         $('#div').html(msg); 
        }  
       });      
      } 
      else if(current_hash=='#edit'){ 
       $.ajax({ 
        type: "POST", 
        url: "/edit.php", 
        data: "data+here", 
        success: function(msg){ 
         $('#div').html(msg); 
        }  
       });    
      } 
    }   
}, 100); 

Sonra sadece bazı karma olan bağlantıları href özelliği atamak;

    <li><a href="#home">Home Page</a></li> 
       <li><a href="#edit">Edit Page</a></li> 

Koca bir yeniden yazma, sadece temelde bazı aynı şey ifadeleri ise katma değil ama birini dışarı yardımcı olabilir.