AJAXify sitesi

6 Cevap php

Ben anlatmaya çalışıyorum ne yapmak meşru nedenleri var. Ben varolan bir site vb php yazılı şeyi düzenli sayfaları sahip olan abc.com söylemek var. Şimdi bir kullanıcı bir linke tıkladığında site ie AJAXify istiyorum, AJAX kullanarak bağlantısını alıp sayfa içeriğini değiştirmeniz gerekir. Bu kolay bir parçasıdır ve jQuery get işlevini kullanarak bunu elde edebilirsiniz.

Kullanıcı sayfasını sık Şimdi ne zaman sorun gelir. Kullanıcı başka bir sayfasında ise ben belirtmek için karma etiketleri kullanabilirsiniz, ancak bunun yerine tekrar yeni bir sayfa almak için javascript kullanarak, bu sayfa çağrıldığında doğrudan PHP kullanarak bunu almak mümkün.

Bana yukarıda ulaşmak için nasıl bir taslağını verir misiniz. Bu işlevsellik, Facebook ne benzerdir.

Zaman ayırdığınız için teşekkür ederim.

6 Cevap

Bu (1) karma etiketi ayrıştırma, ve (2) normalde yaptığınız gibi Ajax ile içerik yükleme oldukça basit bir süreç.

Kullanıcı sayfasında tıkladığında daha fazla içerik yüklerseniz, sadece her zaman doğru sayfada ne yansıtmak için karma etiketini değiştirmek için emin olun.

İşte a quick example ile oynamak için bulunuyor. Bir isim üzerinde tıklayın ve karma etiketi unutmayın. İlgili Javascript bu gibi görünüyor:

// Go straight to content if it's in the hash.
$(document).ready(function(){
   load_story_from_hash();
});

// Call this function whenever user clicks on a hash link
function set_hash(hash){
   window.location.hash = hash;
   load_story_from_hash()
}

// Actually load content based on the hash in the URL
function load_story_from_hash(){

   var hash = window.location.hash;
   hash = hash.replace(/^#/, '');

   if (hash) {

      $('#post_container').load(hash+'.html', {}, function(){
         $.scrollTo('#post_container', 1000);
      });

   }

}

Cevap hayır, sen URL karma sunucu tarafında değer alınamıyor. Bkz How to get Url Hash (#) from server side.

Sen karma değer istemci tarafı almak ve ekstra bir istek yapmak gerekir.

jQuery Tarih benim tercih edilen bir seçimdir. Burada bulunabilir: http://www.balupton.com/projects/jquery-history/, sağlamalarının aşırı yükleme, sağlamalarının tüm kalanını bağlayıcı, çapraz tarayıcı desteği sağlayın.

http://www.balupton.com/projects/jquery-ajaxy/: o kolayca sunucu tarafı değişiklikler ve kalan SEO ve JS-Engelli dostu için gerek kalmadan uygun bir Ajax uygulama içine web sayfanızı yükseltmek için izin, jQuery Ajaxy denilen bir Ajax uzantısı da vardır

Bu http://wbhomes.com.au/ ve http://www.balupton.com gibi siteler tarafından seçilen çözüm

Genel olarak onlar her ikisi de, belgelenmiş desteklenen ve zengin sahiptir. Onlar da burada bir kelle soru kazandınız http://stackoverflow.com/questions/3205900/how-to-show-ajax-requests-in-url/3276206#3276206

Peki bu araçlardan birini kullanabilirsiniz veya kendi dönebilirsiniz. Diğer hileler ile birlikte window.location.hash kullanır.

Ben tam olarak bu konuda yakın zamanda bir makale yazdı. Makale öğretici tarzıdır. Bu nedenle oldukça ölçeklenebilir bir şekilde işleyen, parametrelerin sonsuz sayıda ajax istekleri tetikleyebilir karma değişim olayı, url parametreleri eklemek için nasıl gösteren im, kullanma.

Sen http://andresgallo.com/2012/06/08/ajaxifying-the-web-the-easy-way/ burada bu konuda daha fazla bilgi bulabilirsiniz

Bölüm II Eğer url hash etiketlerinin dışında istediğiniz hemen hemen hiçbir şey yapmanıza izin dolayısıyla bir ajax isteği karma url verilerin nasıl gönderileceğini kapsayan süre Bölüm I, karma bağlantıları nasıl yanıt kapsar.

Bunu yapmanın en iyi yolu ondan sonra URL parçaları dayalı olarak diğer tüm sayfaları yükler bir index.php sahip olmaktır. Örneğin:

http://www.example.com/index.php/reports/employees/hoursWorked

Bu durumda index.php ne talep ediliyor olduğu saatler raporunu çalışmış olduğunu görebilirsiniz, koşmak, ve bu içeriği yükleyecektir. Index.php sonra AJAX, tarayıcıda URL asla değişmeyecek kullanarak bundan sonra diğer tüm içeriği yükler eğer sorundur.

Bu soruna bir yolu imi kullanıcılar için URL bu formunu içeren her sayfada bir "Bu sayfaya bağlantı" linki koymak olacaktır.